使用Weka将数值型目标属性设为Null以实现回归模型预测
给回归预测数据集设置目标属性缺失值的正确姿势
嘿,你的思路完全没问题!在用WEKA做回归预测时,确实需要把待预测数据集中的目标数值型属性设为缺失值,这样模型才会把这些样本识别成需要预测的对象,而不是训练样本。
看了你写的代码框架,我帮你补全并优化一下,确保能正确把指定索引的列全部设为缺失值:
// 用于将指定索引的属性列设为缺失值的方法 private Instances vacateAttribute(Instances dataCSV, int targetIndex) { // 遍历数据集中的每一条样本 for (int i = 0; i < dataCSV.numInstances(); i++) { Instance instance = dataCSV.instance(i); // 用WEKA官方的setMissing方法设置缺失值,这是最规范的方式 instance.setMissing(targetIndex); } return dataCSV; }
几个关键点要注意:
- 别用手动赋值Null的方式,WEKA有专门的
setMissing()方法来处理缺失值,这样能保证数据集格式完全符合模型要求,避免出现奇怪的错误。 - 一定要遍历所有样本,确保每一条数据的目标列都被设置成缺失值,不能只处理单个实例哦。
- 调用的时候,
targetIndex传的是目标属性的索引(WEKA里索引从0开始,比如目标列是第3列就传2)。
举个调用的例子:
假设你要预测的目标属性是数据集的第5列(索引4),调用代码可以这么写:
// 先加载好待预测的数据集 Instances predictData = ...; // 处理成适合预测的格式 Instances readyForPrediction = vacateAttribute(predictData, 4);
这样处理后的数据集就可以直接喂给你的回归模型出预测结果啦!
内容的提问来源于stack exchange,提问作者HAMZA ELRHAZI
相关产品推荐
相关产品推荐

