采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
bobo,假设一个特征有'Mr','Miss','Mrs'这3个字符串值,如果我想对这个特征数值化输入给机器:那有两种方案
①对这三个字符串分别转化成 数字1,2,3
②建立新的三个特征,比如'Title_Mr'对于‘Mr’为1,其它两个为0;然后'Title_Mrs','Title_Miss'以同样的方式;
我想问的是,这两种转化的方式有区别吗?或者对结果有影响吗?
有区别。第二种更加合理。
这是因为对于第一种方案,隐含了一个在现实中并没有的顺序: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
加油!:)
ok,非常感谢bobo老师的解惑~
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.7k 19
3.7k 17
3.1k 15
1.7k 15
1.6k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号