R 使用插入符号查找最近的邻居
我正在使用R的插入符号来拟合k-最近邻模型R 使用插入符号查找最近的邻居,r,machine-learning,r-caret,knn,R,Machine Learning,R Caret,Knn,我正在使用R的插入符号来拟合k-最近邻模型 library(caret) set.seed(0) y = rnorm(20, 100, 15) predictors = matrix(rnorm(80, 10, 5), ncol=4) data = data.frame(cbind(y, predictors)) colnames(data)=c('Price', 'Distance', 'Cost', 'Tax', 'Transport') 我留下一个观察作为测试数据,并使用训练数据拟合模
library(caret)
set.seed(0)
y = rnorm(20, 100, 15)
predictors = matrix(rnorm(80, 10, 5), ncol=4)
data = data.frame(cbind(y, predictors))
colnames(data)=c('Price', 'Distance', 'Cost', 'Tax', 'Transport')
我留下一个观察作为测试数据,并使用训练数据拟合模型
id = sample(nrow(data)-1)
train = data[id, ]
test = data[-id,]
knn.model = train(Price~., method='knn', train)
predict(knn.model, test)
当我显示knn.model
时,它告诉我它使用k=9
。我很想知道哪9个观测值实际上与测试观测值“最接近”。除了手动计算距离外,是否有更简单的方法显示最近的邻居
谢谢 当您使用knn时,您正在创建基于独立变量的点附近的簇。通常,这是使用
train(Price~,method='knn',train)
完成的,这样模型就可以根据一些标准(同时考虑因变量)选择最佳预测。鉴于我没有检查R对象是否存储每个训练值的预测价格,我只是使用训练过的模型来预测给定模型的预期价格(预期价格位于空间中)
最后,因变量只是一个公共空间中所有其他变量的表示,在这个公共空间中,关联的价格被假定为相似的,因为您基于邻近性进行聚类。
作为步骤的总结,您需要计算以下各项:
TestPred<-predict(knn.model, newdata = test)
TrainPred<-predict(knn.model, train)
Nearest9neighbors<-order(abs(TestPred-TrainPred))[1:9]
train[Nearest9neighbors,]
Price Distance Cost Tax Transport
15 95.51177 13.633754 9.725613 13.320678 12.981295
7 86.07149 15.428847 2.181090 2.874508 14.984934
19 106.53525 16.191521 -1.119501 5.439658 11.145098
2 95.10650 11.886978 12.803730 9.944773 16.270416
4 119.08644 14.020948 5.839784 9.420873 8.902422
9 99.91349 3.577003 14.160236 11.242063 16.280094
18 86.62118 7.852434 9.136882 9.411232 17.279942
11 111.45390 8.821467 11.330687 10.095782 16.496562
17 103.78335 14.960802 13.091216 10.718857 8.589131
TestPredHi Carles,我有一个后续问题:为什么我们预测过度训练数据?对于me,k-nn计算目标和所有训练观测值的距离,但该距离是通过预测值而不是响应来测量的。