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

如何在R语言中使用KNN模型对新数据进行预测?

用已训练的KNN模型预测新数据的方法

没问题,其实你只需要把新数据整理成和训练集完全一致的结构(列名、列顺序都要匹配),然后再次调用knn()函数就能得到预测结果了。具体步骤如下:

1. 构造符合要求的新数据框

你的训练集treino是去掉了Species列的iris数据,所以新数据必须包含相同的4个特征列,且顺序要和treino一致:

# 创建新数据,确保列名、列顺序和训练集treino完全匹配
novo_dado <- data.frame(
  Sepal.Length = 5.0,
  Sepal.Width = 3.3,
  Petal.Length = 1.3,
  Petal.Width = 0.1
)

2. 使用KNN模型进行预测

直接复用你之前训练时的train、cl和k参数,把test换成新数据即可:

library(class) # 确保已经加载class包

# 执行预测
predicao_novo <- knn(
  train = treino, 
  test = novo_dado, 
  cl = treino_especie, 
  k = 3, 
  prob = TRUE # 保留prob参数可以查看预测类别的概率
)

# 查看预测的物种类别
print(predicao_novo)

# 查看该预测对应的概率(即预测类别在k个邻居中的占比)
print(attr(predicao_novo, "prob"))

关键注意点

  • 特征结构必须匹配:KNN是基于特征间的距离计算的,所以新数据的列名、列顺序、数据类型都要和训练集treino保持一致,否则会计算错误的距离,导致预测结果失效。
  • 如果你后续对训练集做了标准化/归一化(KNN模型通常建议做这一步优化效果),那新数据也必须用相同的标准化规则处理后再预测。

内容的提问来源于stack exchange,提问作者dekio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:49:36