gpt4 book ai didi

r - 使用插入符号查找最近的邻居

转载 作者:行者123 更新时间:2023-11-30 09:42:24 25 4
gpt4 key购买 nike

我正在使用 R 的 caret 包拟合 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')

我留下一个观察结果作为测试数据,并使用训练数据拟合模型。

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 对象是否存储每个训练值的预测价格,我只是使用训练的模型来预测给定模型的预期价格(预期价格位于空间中)。

最后,因变量只是公共(public)空间中所有其他变量的表示,其中关联的价格被假定为相似,因为您是根据邻近度进行聚类的。作为步骤摘要,您需要计算以下内容:

  1. 获取每个训练数据点的距离。这是通过对它们进行预测来完成的。
  2. 计算训练数据与您感兴趣的观察值之间的距离(以绝对值表示,因为您不关心符号,而只关心绝对距离)。
  3. 取 N 个较小的索引(例如 N= 9)。您可以获得与此较低距离相关的观察结果。

    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

关于r - 使用插入符号查找最近的邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com