Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在MATLAB中理解knn算法(分类)_Algorithm_Matlab_Statistics_Nearest Neighbor_Knn - Fatal编程技术网

Algorithm 在MATLAB中理解knn算法(分类)

Algorithm 在MATLAB中理解knn算法(分类),algorithm,matlab,statistics,nearest-neighbor,knn,Algorithm,Matlab,Statistics,Nearest Neighbor,Knn,我仍然不太熟悉使用MATLAB,所以如果我的问题看起来有点愚蠢,我很抱歉。我正在尝试学习K-NN分类,我的教授说我应该从MATLAB开始。我有一个向量,我们称之为x,它包含两列数据。第一列是功能1,第二列是功能2。x中的每一行表示一个数据点。我还有另一个向量,我们称之为c,它包含每个数据点(1或2)的类标签,只有2个类。 问题是:我应该使用函数“knnsearch”来查找k近邻,并构建一个k-NN分类器。我知道数据中的哪些点是训练集、验证集和测试集。然后,我应该看看被错误分类的点数,看看随着k的

我仍然不太熟悉使用MATLAB,所以如果我的问题看起来有点愚蠢,我很抱歉。我正在尝试学习K-NN分类,我的教授说我应该从MATLAB开始。我有一个向量,我们称之为x,它包含两列数据。第一列是功能1,第二列是功能2。x中的每一行表示一个数据点。我还有另一个向量,我们称之为c,它包含每个数据点(1或2)的类标签,只有2个类。 问题是:我应该使用函数“knnsearch”来查找k近邻,并构建一个k-NN分类器。我知道数据中的哪些点是训练集、验证集和测试集。然后,我应该看看被错误分类的点数,看看随着k的增加这是如何变化的


我想我知道knnsearch是如何工作的,但我不知道从那里可以走到哪里。有人能帮忙吗?在这一点上,即使是关于算法工作原理的提示也会有所帮助,因为我已经花了11个多小时试图解决这个问题。

您可能会发现
ClassificationKNN
类比
knnsearch
函数更适合您的需要
knnsearch
只查找最近的邻居<代码>分类KNN将其应用于构建分类模型。如果您愿意,您也可以自己做,但是
ClassificationKNN
要容易得多

例如:

% X is your nx2 array of training data
% Y is your nx1 array of training labels

model = ClassificationKNN.fit(X,Y);

% newX is an mx2 array of test data

predictedY = predict(model, newX)

事情应该就这么简单。如果您查看统计工具箱的文档,会发现更多关于
分类knn

的演示。如果您只想找到k-NN,可以使用MATLAB提供的函数:

IDX = knnsearch(X,Y)
你可以读更多


此外,您可能会发现这个答案很有用。

Sam,我感谢您的帮助。我认为你的解决方案会很好,但我觉得如果我只是使用knnsearch函数来查找算法,然后自己构建分类过程,我就不会那么理解了。如果我想这样做,你有什么建议吗?如果没有,你能告诉我什么资源吗?