2017-12-23 6 views
3

나는 Knn ​​회귀 분석법과 나중의 커널 평활화에 대해 조사 중이다. 내가 여기에 9.2에서 "knn.reg"사용하는 방법에 대한 설명을 따르도록 시도하고있다Rn의 회귀 분석

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