如何在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
相关产品推荐
相关产品推荐

