关于 字符串特征 数值化?
来源: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
加油!:)
312018-06-27