机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq2279055353)
什么是类别变量?
一个类别变量,是仅取几个值的变量,其中的每个值描述某一属性。例如,
-
考虑一项关于吃早餐频率的调查。提供四个选项:Never, Rarely, Most days, Every day.
-
调查私家车的品牌:Honda, Toyota, and Ford.
当你建立一个机器学习模型的时候,如果没有经过预处理而直接使用类别变量,将是错误的。下面,我们介绍处理类别变量的三种常用方法。
处理类别变量
方法一:扔掉类别变量
处理类别变量的最简单的方法,莫过于直接从数据集里删除它。当然,这种简单的删除仅适用于那种没有有价值信息的变量。
方法二:标签编码
标签编码法,是给每个类别一个唯一的整数值。该方法通常假设类别是有序的,例如,
“Never” (0) < “Rarely” (1) < “Most days” (2) < “Every day” (3).
这种编码方式对基于树的模型,像决策树、随机森林,效果比较理想。
方法三:One-Hot 编码
One-Hot编码法,对每个可能的类别,产生一个新列(变量),表示该值在具体的某次观测里是否存在。
例如,类别变量"Color"取3个可能值:“Red”, “Yellow”, and “Green”. 为每个值增加一个列变量,如果原始值是"Red", 那么"Red"列设置为1, 其它列为0;以此类推。
对比标签编码,One-Hot编码并不假设类别有序,我们把这种变量称为名义变量(nominal variables).
当类别变量取很多值时,例如,超过15个类别,One-Hot编码效果不理想。
例子
在这个例子里,我们对不同的算法尝试不同的类