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



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

我想我已经知道knnsearch是如何工作的,但不知道该怎么办。有人能帮忙吗?在这一点上,即使是关于算法如何工作的提示也会很有帮助,因为我已经花了11个多小时试图解决这个问题。

您可能会发现ClassificationKNN类比knnsearch函数更适合您的需求。CCD_ 3只查找最近的邻居;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)

应该就这么简单。如果您查看Statistics Toolbox的文档,就会看到更多ClassificationKNN的演示。

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

IDX = knnsearch(X,Y)

在这里你可以阅读更多。

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

最新更新