我有一个类似的问题:如何查看R中的最近邻居?
代码示例:
library(tidymodels)
knn_rec <- recipe(Species ~ ., data = iris)
knn_lookup <- workflow() %>%
add_model(nearest_neighbor(neighbors = 3) %>%
set_engine("kknn") %>%
set_mode("classification")) %>%
add_recipe(knn_rec) %>%
fit(data = iris)
knn_pred <- predict(knn_lookup , new_data = iris[1,1:4], type = "raw")
如何追踪哪些行被识别为最近的 3 个邻居?我更喜欢 tidyverse 中像 tidy() 这样简单的东西。
在你的问题中,你提到使用
tidy()
,它来自 broom 包,是的,对于总结模型的结果很有用,这是使用 tidyverse 的一种不太复杂的方法。
使用 kknn,您必须将模型拟合到训练数据中:
例如:
knn_fit <- fit(knn_spec, mpg ~ ., data = train_data)
现在提取特定观察的最近邻居,直接使用 kknn::kknn() 函数。
对于新的观察,请执行以下操作:
#example
new_observation <- data.frame(cyl = 6, disp = 160, hp = 110, drat = 3.9, wt = 2.62, qsec = 16.46, vs = 0, am = 1, gear = 4, carb = 4)
neighbors <- kknn::kknn(mpg ~ ., train_data, new_observation, k = 5, distance = 2) # i used minkowski distances
print(neighbors)
输出会向您显示最近的邻居及其预测值。
如果需要,kknn 有自己的文档。