我对使用 MATLAB 仍然不是很熟悉,所以如果我的问题看起来有点愚蠢,我深表歉意。我正在尝试学习 K-NN 分类,我的教授说我应该从 MATLAB 开始。我有一个向量,我们称之为 x,它包含 2 列数据。第一列是特征 1,第二列是特征 2。x 中的每一行代表一个数据点。我还有另一个向量,我们称之为 c,它包含每个数据点(1 或 2)的类标签,只有 2 个类。 这就是问题所在:我应该使用函数“knnsearch”来查找 k-neighbors,并构建一个 K-NN 分类器。我知道我的数据中的哪些点是训练集、验证集和测试集。然后,我应该查看被错误分类的点数,并查看其随着 k 的增加而发生的变化。
我想我知道 knnsearch 是如何工作的,但不知道从那里去哪里。谁能帮忙?即使是有关该算法如何工作的提示在这一点上也会有所帮助,因为我已经花了 11 多个小时试图弄清楚这个问题。
最佳答案
您可能会发现 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)
应该就这么简单。如果您查看 Statistics Toolbox 的文档,那里有更多关于 ClassificationKNN
的演示。
关于algorithm - 了解 MATLAB 中的 knn 算法(分类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939604/