关于 字符串特征 数值化?

来源:12-1 什么是决策树

慕先生6474118

2018-06-27

bobo,假设一个特征有'Mr','Miss','Mrs'这3个字符串值,如果我想对这个特征数值化输入给机器:那有两种方案  

①对这三个字符串分别转化成 数字1,2,3

②建立新的三个特征,比如'Title_Mr'对于‘Mr’为1,其它两个为0;然后'Title_Mrs','Title_Miss'以同样的方式;

我想问的是,这两种转化的方式有区别吗?或者对结果有影响吗?


写回答

1回答

liuyubobobo

2018-06-27

有区别。第二种更加合理。


这是因为对于第一种方案,隐含了一个在现实中并没有的顺序:1 < 2 < 3,当算法把这个特征当做数字看待的时候,会考虑到这个顺序的关系。但是现实中,Mr, Miss和Mrs这三个类别,是没有这种顺序关系的,所以第二种方案更加合理。


实际上,第二种方案本身,是在特征处理领域,在处理类别特征(Category Feature)时,非常常用的一种方式,称为“One Hot Encoding”。可以在网上搜索一下这个关键词,其中的原理非常简单,就是你说的第二种方案:)在机器学习领域,有很多看起来高大上的概念,其实并不神秘,相信学习这个课程的过程中,你已经遇到很多这种情况了:)


同时,在sklearn中也有相应的类,可以直接进行One Hot Encoding。有兴趣可以在互联网上搜索一下,简单自学一下:)sklearn中的OneHotEncoder文档如下:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html


加油!:)

3
1
慕先生6474118
ok,非常感谢bobo老师的解惑~
2018-06-27
共1条回复

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

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

5896 学习 · 2455 问题

查看课程