做one-hot编码有时候过于稀疏
pd.factorize(): factorize是因式分解的意思,在这里是把常见的字符型变量分解为数字。
aaa,bbb=pd.factorize(train["EngineVersion"])
aaa
bbb
转换后包含两个array,分别是编码后的值,以及原值对应的index即编码的后的值
缺陷:
即它把字符串映射成的数字的规则是先看见的小,后看见的大。意思就是这一列的第一行,必定为0,第二行如果和第一行的取值不同,就为1,否则就是0.以此类推。也就是说它忽略了字符串代表的含义。在我们这里,设备号应该是越大越先进。而它就没有表现出来。所以在这里我认为用map映射编码更好:
即把设备号小的映射为小数字,大的为大数字,依次排序。