2017-06-07 35 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)。所以要麼自己編碼(鏈接有粗略的說明),要麼使用非線性迴歸。 –