特征的预处理方式有多个,如何同时处理?
来源:4-8 scikit-learn中的Scaler
jun_0120_cn
2018-01-13
特征有 x1,x2,x3,x4,x5,其中x1,x2需要做标准化处理,x3,x4,x5是要做One-hot-encoder。
这种情况下代码如何做?用Pipeline管道呢?
写回答
1回答
-
很好的问题。由于这个问题主要讲解机器学习算法,所以对于特征预处理没有进行特别讲解,尤其是one-hot-encoder根本没有进行提及。
一种方式是对于这种数据,封装自己的预处理类。具体过程也很简单:首先将整个数据拆成两张表,t1包括x1, x2两列的所有数据,t2包括x3,x4,x5三列的所有数据。之后,对t1做标准化处理,得到t1';t2做one-hot-encoder,得到t2'。最后t1'和t2'合并得到最终的数据结果即为对数据进行预处理的结果。
如果想使用scikit-learn的体系进行处理,此时不能只是用Pipeline,因为对这两类特征的处理是并行的关系,不是顺序的关系。还需要使用FeatureUnion。感兴趣的话可以在网上搜索一下相关使用方式。文档见这里:http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html
50
相似问题