特征的预处理方式有多个,如何同时处理?

来源: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回答

liuyubobobo

2018-01-14

很好的问题。由于这个问题主要讲解机器学习算法,所以对于特征预处理没有进行特别讲解,尤其是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

5
0

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程