2017-12-23 39 views
3

私はKnn回帰法とそれ以降のカーネルスムージングについて調べています。私はここに9.2に「knn.reg」の使用方法の説明に従うことをしようとしているRNのKnn回帰

x = runif(100,0,pi) 
e = rnorm(100,0,0.1) 
y = sin(x)+e 

: は、私は、次のコードを使用してデータセットを生成したR.でプロットを使用して、これらの方法を実証することを望みます: https://daviddalpiaz.github.io/r4sl/k-nearest-neighbors.html#regression

grid2=data.frame(x) 
knn10 = FNN::knn.reg(train = x, test = grid2, y = y, k = 10) 

私は、値が私には合理的なようだが、私は私のx〜yのプロットの上にそれらの行をプロットしてみたときに、私は私が望んでいるものを得ることはありません予測しました。

plot(x,y) 
lines(grid2$x,knn10$pred) 

RPlot

私は何かを明らかに不足していることだし、本当にあなたが提供できるすべてのヘルプやアドバイスをいただければ幸いように私は感じて、あなたの時間をありがとうございました。

+0

期待される出力とは何ですか? –

答えて

2

x値を並べ替えるだけで、線をプロットするだけで済みます。

plot(x,y) 
ORD = order(grid2$x) 
lines(grid2$x[ORD],knn10$pred[ORD]) 

enter image description here

+0

これは完全に機能しています。しかし、これらの値を注文する必要がある理由はありますか?私は他の機能を不適切に使ったことがありますか、これは単なる追加の中間ステップですか? – Ben

+0

チャートを描画するために注文する必要があります。 'lines'はあなたが与えた点の間に線を描きます。あなたが順番通りに点を使うならば、(あなたが見たように)画面を横切って線を前後に引くでしょう。 – G5W