2014-09-19 159 views
0

我对MATLAB的使用还不是很熟悉,所以我很抱歉如果我的问题看起来有点愚蠢。我试图学习K-NN分类,我的教授说我应该从MATLAB开始。我有一个向量,我们称它为x,它包含2列数据。第一列是特征1,第二列是特征2. x中的每一行表示一个数据点。我还有另一个向量,我们称之为c,其中包含每个数据点(1或2)的类标签,但只有2个类。 下面是问题:我应该使用函数“knnsearch”来查找k邻居,并构建一个K-NN分类器。我知道我的数据中的哪些点是训练,验证和测试集。那么我应该查看被错误分类的点数,并且看看这个数字随着k的增加而变化。在MATLAB中理解knn算法(分类)

我想我已经知道knnsearch是如何工作的,但不知道该从哪里去。谁能帮忙?即使是关于算法工作原理的提示在这一点上也会有所帮助,因为我花了超过11个小时试图找出这个问题。

回答

1

您可能会发现ClassificationKNN类更适合您的需求,而不是knnsearch函数。 knnsearch只找到最近的邻居; ClassificationKNN适用于构建分类模型。如果你愿意,你也可以自己做,但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) 

应当那样简单。如果您查看统计工具箱的文档,还有更多的示例ClassificationKNN

+0

山姆,我感谢你的帮助。我认为你的解决方案会很好,但是如果我只是使用knnsearch函数来查找算法,并且我自己构建分类过程,我不觉得我会理解它。如果我想这样做,你有建议吗?如果没有,是否有资源可以指向我? – 2014-09-20 03:36:43

0

如果你只想找到K-NN,您可以使用功能的MATLAB提供:

IDX = knnsearch(X,Y) 

Here你可以阅读更多。

此外,你可能会发现this答案有用。