选择最具区分度的特征、创建新特征等都属于预处理的范畴。
scikit-learn的预处理工具叫作转换器,它接受原始数据集,返回转换后的数据集。
除了处理数值型特征,转换器还能用来抽取特征。
标准预处理
from sklearn.preprocessing import MinMaxScaler
这个类可以把每个特征的值域规范化为0到1之间。最小值用0代替,最大值用1代替,其余值介于两者之间。
我们在预处理器MinMaxScaler上调用转换函数。有些转换器要求像训练分类器那样先进行训练,但是MinMaxScaler不需要,
直接调用fit_transform()函数,即可完成训练和转换。
还有很多其他类似的规范方法,对于其他类型的应用和特征类型会很有用。
1、为使每条数据各特征值得和为1,使用sklearn.preprocessing.Normalizer。
2、为使各特征的均值为0,方差为1,使用sklearn.preprocessing.StandardScaler,常用作规范化的基准。
3、为将数值特征为二值化,使用sklearn.preprocessing.Binarizer,大于阈值为1,反之为零。
流水线
from sklearn.pipline import Pipline
流水线的输入为一连串的数据挖掘步骤,其中最后一步必须是估计器,前几步是转换器。输入的数据集经过转换器的处理后,
输出的结果作为下一步的输入。最后,用位于流水线最后一步的估计器对数据进行分类。
流水线分为两大步:
a)用MinMaxScaler将特征取值范围规范到0~1。
b)指定KNeighborsClassfier分类器。
每一步都用元组(‘名称’,步骤)来表示。现在来创建流水线。
scaling_pipeline=Pipeline([('scale',MinMaxScaler()),('predict',KNeighborsClassfier())])
scores=cross_val_score(scaling_pipeline,X_broken,y,scoring='accuracy')