【问题标题】:Understanding knn algorithm (classification) in MATLAB了解MATLAB中的knn算法(分类)
【发布时间】:2014-11-14 09:13:08
【问题描述】:

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

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

【问题讨论】:

    标签: algorithm matlab statistics nearest-neighbor knn


    【解决方案1】:

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

    IDX = knnsearch(X,Y)
    

    Here你可以阅读更多。

    此外,您可能会发现this 的答案很有用。

    【讨论】:

      【解决方案2】:

      您可能会发现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 的演示。

      【讨论】:

      • 山姆,感谢您的帮助。我认为您的解决方案会很棒,但如果我只是使用 knnsearch 函数查找算法,然后自己构建分类过程,我觉得我不会理解它。如果我想这样做,你有什么建议吗?如果没有,您可以指出我的资源吗?
      猜你喜欢
      • 2012-06-07
      • 2015-07-13
      • 2015-04-13
      • 2012-09-13
      • 2019-10-04
      • 2014-11-14
      • 2017-01-17
      • 2016-03-04
      • 2017-04-03
      相关资源
      最近更新 更多