weka在做数据预处理的时候针对attribute提供了多种方式,包括值的各种转换,常用的如下:
1.缺失值处理
weka.filters.unsupervised.attribute.ReplaceMissingValues。 对于数值属性,用平均值代替缺失值,对于nominal属性,用它的mode(出现最多的值)来代替缺失值。
2.规范化处理
类weka.filters.unsupervised.attribute.Normalize。规范化给定数据集中的所有数值属性值,类属性除外。结果值默认在区间[0,1],但是利用缩放和平移参数,我们能将数值属性值规范到任何区间。如:但scale=2.0,translation=-1.0时,你能将属性值规范到区间[-1,+1]。
3.标准化处理
类weka.filters.unsupervised.attribute.Standardize。标准化给定数据集中所有数值属性的值到一个0均值和单位方差的正态分布。
4.离散化处理
类weka.filters.supervised.attribute.Discretize和weka.filters.unsupervised.attribute.Discretize。分别进行监督和无监督的数值属性的离散化,用来离散数据集中的一些数值属性到分类属性。
代码如下:
ReplaceMissingValues filter = new ReplaceMissingValues();
filter.setInputFormat(instances);
Instances newTrain = Filter.useFilter(instances, filter);