You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KNN模型运行提示列数需一致错误求助,同数据拆分随机森林可正常运行

问题原因

  • 变量名不匹配:代码中将预测结果存储到pred_y变量,后续计算指标、绘图时错误调用了不存在的y_pred变量,这是最直接的报错原因。
  • knn.reg调用问题:FNN包的knn.reg默认无predict S3方法,直接调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:24:04