机器学习中我们常常需要自己准备数据,对于分类task,one-hot编码是最常用的label方式。
什么是one-hot:离散的每一种取值都看做一个类别,若一种特征中有N个不相同的取值,那么就可以将该特征当作N种不同的类别,one-hot编码保证了每一个类别都会有唯一的取值,仅在该类别上取值为,其他位置取值为0。
举例来说,如果特征1下有cat、dog、horse,那么one-hot编码如下:
代码上用pandas中的pd.get_dummies()实现:
import pandas as pd
import numpy as np
data = pd.read_csv('feature.csv')
data = pd.DataFrame(data,columns=['animal'])
print (data)
输出:
dummies = pd.get_dummies(data)
输出:
那么利用pandas来实现one-hot编码的方法如上,这里需要强调的是,即使数据是一堆没有实际意义的编码,同样可以使用pd.get_dummies()来实现one-hot编码。
数据如下:
one-hot编码结果: