designe is done

This commit is contained in:
StarLee 2016-07-01 01:04:53 +08:00
parent cd3df88598
commit f9e5418292
5 changed files with 49 additions and 6 deletions

53
3.tex
View File

@ -93,7 +93,47 @@ NKK缺点有
\section{实验过程}
\subsection{算法设计}
\subsection{算法模型设计}
本节中简要介绍我实现的KNN涉及到的主要类和算法的大致模型下一节详细介绍具体实现细节。
\begin{table}[!h]
\renewcommand\arraystretch{2}
\centering
\begin{tabular}{c|c}
\hline
类名 & 功能 \\
\hline
KNN & 实现KNN主要逻辑功能距离算法由子类实现\\
\hline
KNNWithEuclid & 利用欧几里得距离计算差异性的KNN \\
\hline
KNNWithCos & 利用余弦相似度计算差异性的KNN \\
\hline
DataHelper & 数据操作的辅助类 \\
\hline
Statistics & 用于统计数据特性的辅助类 \\
\hline
\end{tabular}
\caption{主要相关类及其功能}
\end{table}
其大致模型如类图所示。
\begin{figure}[h!]
\centering
\includegraphics[width=16cm]{classfigure.jpg}
\caption{算法模型示意图}
\label{knnmodel}
\end{figure}
使用该算法解决实际问题时通常流程所对应的时序图为。
\begin{figure}[h!]
\centering
\includegraphics[width=16cm]{seqfigure.jpg}
\caption{算法运行时序图}
\label{knnmodel}
\end{figure}
\subsection{实现KNN算法}
@ -174,11 +214,13 @@ for x in testData:
\section{实验结果}
本次报告分别从K值和距离算法两个方面对实现的KNN算法进行测试下面两个表分别是K值从1到10时利用欧几里得距离和余弦相似度对946个样本利用KNN预测得到的结果
\begin{table}[!hbp]
\begin{table}[!h]
\renewcommand\arraystretch{1.1}
\centering
\begin{tabular}{c c c}
\hline
K值 & 预测错误数 & 越策错误率 \\
K值 & 预测错误数 & 预测错误率 \\
\hline
1 & 13 & 0.013742 \\
@ -205,10 +247,11 @@ K值 & 预测错误数 & 越策错误率 \\
\end{table}
\begin{table}[!h]
\renewcommand\arraystretch{1.1}
\centering
\begin{tabular}{c c c}
\hline
K值 & 预测错误数 & 越策错误率 \\
K值 & 预测错误数 & 预测错误率 \\
\hline
1 & 11 & 0.011628 \\
@ -233,7 +276,7 @@ K值 & 预测错误数 & 越策错误率 \\
\end{tabular}
\caption{利用余弦相似度得到的结果}
\end{table}
从上面两个表中可以看出K的取值对于距离函数取欧几里得距离还是余弦相似度都有很大的影响。在K值取1到10这个范围内欧几里得算法随着K值的增加错误率先是下降然后再增高并且K=3的时候效果最好错误率是最低的并且在K=8的时候又出现了一个波动。对于余弦相似度来说在K=1的时候效果最好随着K值的增加错误率是先增高后下降然后再增高。在取相同的K值时两个距离函数的错误率不好比较都有表现好的情况也都有表现差的情况很少有一样的情况。但是在K取值在1到10这个区间内他们两个取到的最好效果是一样的都是错判11个样本。当然如果K的取值范围更大一些的话错误率肯定还会变化。通过上面的对比可以发现KNN算法对参数K和距离函数的选择还是很敏感的。
\section{实验总结}

BIN
arch.vsdx Normal file

Binary file not shown.

BIN
classfigure.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
seqfigure.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -47,7 +47,7 @@ SystemML & 66 & 289 & 109 \\
\caption{各个系统在github上的关注度}
\end{table}
从上表可以看出关注度最高的是Tensforflow其次是MLlib无论是Star数还是fork数都是遥遥领先于其他几个系统。如此高的关注度说明了这两个系统得到了开发人员的广泛认可和支持。在我看来这就形成了一个如下图所示的“开源软件开发良性循环”一个项目质量高那么用户和开发者就越喜欢从而就会积极地去贡献自己的力量也就会促使该项目的质量进一步提高如此循环不断。当然TensorFlow本身质量高之外和Google在业内的影响力也分不开。我最看好的是MLlib因为现在它是Spark原生集成的库对运行在Sark上有先天的优势借着Sark的势头应该会得到更加迅猛的发展和应用再加一些Spar今年峰会概况】
从上表可以看出关注度最高的是Tensforflow其次是MLlib无论是Star数还是fork数都是遥遥领先于其他几个系统。如此高的关注度说明了这两个系统得到了开发人员的广泛认可和支持。在我看来这就形成了一个如下图所示的“开源软件开发良性循环”一个项目质量高那么用户和开发者就越喜欢从而就会积极地去贡献自己的力量也就会促使该项目的质量进一步提高如此循环不断。当然TensorFlow本身质量高之外和Google在业内的影响力也分不开。我最看好的是MLlib因为现在它是Spark原生集成的库对运行在Sark上有先天的优势借着Sark的势头应该会得到更加迅猛的发展和应用。
\begin{figure}[h!]
\centering