r-knn预测特定值x



我正试图找出如何应用knn.reg函数来预测特定值x(它是同一数据集的"马力"变量(的y(在本例中是Auto数据集的mpg(。

起初,我使用knn.reg函数构建了一个k=10的knn回归模型,如下所示:

#Preliminary setup
library(ISLR)
library(fastDummies)
library(leaps)
library(boot)
library(FNN)
library(caTools)
df<-Auto
df$origin <- as.factor(df$origin)
df <- dummy_cols(df, select_columns = "origin")
df <- df[,!(names(df) %in% c("name", "origin","origin_1"))]
#Attempted models    
knn.model<-knn.reg(train=df$horsepower, y=df$mpg, k=10)
split<-sample.split(df$mpg, SplitRatio=0.8)
train=df[split,]
test=df[!split,]
knn.model<-knn.reg(train=train[c('horsepower')], test=test[c('horsepower')], y=df$mpg, k=10)

我已经尝试了两个模型,它们要么包含测试数据,要么排除测试数据是从原始数据中分离出来的,但我想我想使用整个数据集作为训练数据。

在构建这些模型后,我尝试使用predict((函数来估计车辆马力为200时的mpg,它看起来像这样:

mpg<-c(200)
predict(knn.model, newdata=mpg)

然而,predict()函数的问题是,它给出了一个错误,告诉我predict() can't be applied to class "knnRegCV."

我不确定我是否应该使用predict()以外的函数,或者我的代码是否缺少一些重要的东西。如果有任何建议或意见可以帮助我解决这个问题,我将不胜感激。非常感谢!

函数predict()没有用于knn.reg()函数返回的对象的方法,但可以很容易地使用test=参数。使用您的第一个knn.model:
knn.reg(train=df$horsepower, test=200, y=df$mpg, k=10)
# Prediction:
# [1] 12.45

由于您只有一个预测器,因此需要创建一个数据帧来估计多个值:

pred <- data.frame(horsepower=c(100, 150, 200, 250))   
knn.reg(train=df$horsepower, test=pred, y=df$mpg, k=10)
# Prediction:
# [1] 17.90 14.50 12.45 12.90

相关内容

  • 没有找到相关文章

最新更新