在机器学习中有很多特征有可能是字符串类型的:如周志华老师的西瓜书中西瓜的色泽、纹理、根茎等等。
计算机对字符串的特征是无能为力的,所以将字符串特征映射成数字就成了一个唯一的选择。
目前有2种主流的方法,一种是:标签编码(Label Encoder),另一种是独热编码(One Hot Encoder)。推荐使用独热编码。
标签编码:
标签编码就是对字符串转换成1 , 2,3这种形式,但是存在一个问题,就是标签编码的结果存在大小的关系,所以这种编码显然是有一定的局限性。
#python实现
from sklearn.preprocessing import LabelEncoder
labelencoder = LableEncoder()
X[:, 0] = labelencoder.fit_transform(X[:, 0])
独热编码
独热编码就克服了这局限性
它先对该列字符串进行分类,把原有的一列拆成n列(n是分类的个数),如果字符串所在的那一列在这一类上面则这一列为1,其余列为0。
#python实现
from sklearn.preprocessing import OneHotEncoder
onehotencoder = OneHotEncoder(categorical_feature=0)
x = onehotencoder.fit_transform(x).toarray