2017-06-07 33 views
1

我有兴趣使用k-NN方法来训练我的数据集,然后对样本数据集进行预测。我有表(tb)每个包含两个大小为1X2000的变量。让我们为简单起见,回归使用K-NN进行预测使用matlab?

训练数据集,X = tb(1:1500,1)

 Y = tb(1:1500,2);  % both X and Y are training datasets 

现在样品测试给出的,

   x = tb(1501:2000,1); 
      y= tb(1501:2000,2);  

现在我想用k-NN方法来预测新y给定的值为x的值。

我写的代码如下:

mdl = fitcknn(X,Y,'NumNeighbors',150,'Standardize',1); 
     predictedY = predict(mdl,x); 

     plot(x,predictedY) 

当我运行的代码我没有得到正确的结果。

基于一些谷歌搜索,我发现它这个代码不是回归,而是分类。我不知道k-NN如何用于回归。任何帮助?

回答

0

您不应该使用ClassificationKNN.fit - 它将在未来版本中删除。相反,您可以使用fitcknn

model = fitcknn(X,Y,'NumNeighbors',150); 
+0

谢谢你。但是当我这样做。与训练数据集图相比,我的预测图完全错误。我附上有修改的图表,请看看并告诉我你的想法? –

+0

我以为你想用KNN做一个分类,但看起来你想要一个回归。据我所知,fitcknn只能做分类,因此不是你想要的。不幸的是,它似乎也没有它的回归版本(https://stackoverflow.com/questions/19807294/knn-regression-in-matlab)。所以要么自己编码(链接有粗略的说明),要么使用非线性回归。 –