机器学习训练营——机器学习爱好者的自由交流空间(qq群号:696721295)
scikit-learn提供了一个数据变换库,可以实现清洗、缩减、扩展或产生特征表示。类似其它估计量,这些都由具有fit
方法的类表示。fit方法从训练集学习模型参数(例如均值和标准差),transform
方法应用这个变换模型到未知数据上。而fit_transform
方法可以更方便高效地同时建模和变换训练数据。
管道:链式估计量
Pipeline
能够把多个估计量链成一个。当预处理数据存在一个固定的步骤顺序时,例如,特征选择、归一化、分类,它是有用的。Pipeline服务于两个目的:
- 便利和打包
只需在你的数据上调用一次fit
, predict
, 就可以拟合整个估计过程。
- 联合参数选择
你可以在pipeline里立即grid search
所有估计量的参数。
除了最后一个,在pipeline里的所有估计量,都必须被变换(即,必须有一个transform方法),最后的估计量可以是任何类型的(transformer, classifier等)。
使用方法
使用一个(key, value)
对列表创建pipeline, 在这里key是一个字符串,表示你想要的步骤名字,value是一个估计量对象。
工具函数make_pipeline
是pipeline的快速创建法,它取的估计量数是可变的,返回一个pipeline, 自动填充名字。
一个pipeline的估计量作为列表存储在steps
属性里。
作为一个字典存储在named_steps
属性里。
使用<estimator>__<parameter>
语法访问估计量的参数。
特征联合:组合的特征空间
FeatureUnion
组合几个变换对象成为一个新的变换。一个FeatureUnion取一个变换对象列表。在拟合期间,每个对象被数据单独拟合。出于变换数据的目的,这些变换是并行的,它们输出的样本向量按端到端的方式连成一个更大的向量。FeatureUnion和Pipeline组合可以实现更复杂的模型。
使用方法
使用(key, value)
对形式的列表创建一个FeatureUnion, key是变换名(一个字符串),value是一个估计量对象。
像pipeline一样,特征组合也有一个快速创建函数make_union
, 它不需要明确命名成分。同样,使用set_params
, 各个步骤也可以被替代,设置为None
则可以忽略。
阅读更多精彩内容,请关注微信公众号:统计学习与大数据