因为模型处理不了文本类型的变量,所以如果是文本类型的分类变量都要转为数值类型。
one hot编码就是很常用的一种转码方式,转后的数据也叫虚拟变量。
比如地区字段Geography里面有3种值,分别是France、Germany、Spain。转为虚拟变量后值就变成了字段名,其含义是:是否法国、是否德国、是否西班牙。
pandas库里面就有这个工具,语法是pd.get_dummies('数据'):
onehot_data = pd.get_dummies(data['Geography'])
onehot_data
运行完打印:
在英语里面 dummies是dummy 的复数形式,dummy的意思是假的、虚拟的、仿品··· get_dummies可以理解成是获取虚拟变量的意思。
注意有一种分类变量乍一看很像是可以使用one hot编码的,但实际却不能用的,比如性别。如果使用one hot编码,就会变成两个字段:是否男、是否女,但其实这俩字段是一个意思,用one hot编码就重复了。遇到类似的这种字段,直接赋值成数值类型的就行了。
反面案例:
数据长这样:
One Hot运行完 长这样: