KNN模型运行提示列数需一致错误求助,同数据拆分随机森林可正常运行
问题原因
- 变量名不匹配:代码中将预测结果存储到
pred_y变量,后续计算指标、绘图时错误调用了不存在的y_pred变量,这是最直接的报错原因。 knn.reg调用问题:FNN包的knn.reg默认无predictS3方法,直接调用predict()会触发报错。- 依赖包缺失:需要提前加载提供
knn.reg、MAE、RMSE、R2的对应包,否则会报函数不存在错误。
修复后代码
# 未安装依赖先执行:install.packages(c("FNN", "Metrics")) library(FNN) library(Metrics) KNN_Model <- function(train, test, k = 5){ set.seed(1738) # 拆分特征与标签 train_y <- train[, 'prod_efficiency'] train_x <- train[, names(train) != 'prod_efficiency'] test_y <- test[, 'prod_efficiency'] test_x <- test[, names(test) != 'prod_efficiency'] # 直接传入测试集获取预测结果,无需调用predict knn_fit <- knn.reg(train = train_x, test = test_x, y = train_y, k = k) pred_y <- knn_fit$pred # 输出指标 cat("MAE:", MAE(pred_y, test_y), "\n") cat("RMSE:", RMSE(pred_y, test_y), "\n") cat("R2:", R2(pred_y, test_y, form = "traditional"), "\n") # 绘图 x <- seq_along(test_y) plot(x, test_y, pch = 19, col = "blue", ylab = "生产效率") lines(x, pred_y, col = "red") legend("topleft", legend = c("真实值", "预测值"), col = c("blue", "red"), pch = c(19, NA), lty = c(NA, 1), cex = 0.7) # 可选返回结果 return(list(pred = pred_y, mae = MAE(pred_y, test_y), rmse = RMSE(pred_y, test_y), r2 = R2(pred_y, test_y, form = "traditional"))) } KNN_Model(train, test)
内容的提问来源于stack exchange,提问作者user3789200
相关产品推荐
相关产品推荐

