美文网首页
机器学习中的常用编码方式(一)

机器学习中的常用编码方式(一)

作者: 生信编程日常 | 来源:发表于2020-10-01 23:49 被阅读0次

在建模的时候,有时各个feature不是数值型或者连续数值分类,这种情况下需要对这些特征值进行编码,sklearn中提供了多种编码方法。

1). LabelEncoder
可以对不连续的数值编码,例如:

from sklearn import preprocessing
encode = preprocessing.LabelEncoder()
test = [1,2,3,2,5]
encode.fit(test)
encode.transform(test) 

返回:
array([0, 1, 2, 1, 3])

对文本编码:

from sklearn import preprocessing
encode = preprocessing.LabelEncoder()
test = ['peking', 'shanghai', 'peking']
encode.fit(test)
encode.transform(test) 

返回:
array([0, 1, 0])

2). OneHotEncoder
对于有的数据,如果我们简单的用数值替换,这些数值大小会影响到权重矩阵的计算。其中一个解决方法就是采用OneHotEncoder,这种表示方式将每一个分类特征变量可能的取值转变成m个二值特征,对于每一条数据这m个值中仅有一个特征值为1,其他的都为0。比如:

from sklearn.preprocessing import OneHotEncoder

 data = [['peking',40],
        ['shanghai',22],
        ['peking',50]]

data = pd.DataFrame(data,columns=['city','number'])

# 先转为数值型
uniq_type = data['city'].unique()
for j in range(len(uniq_type)):
    data['city'] = data['city'].apply(lambda x:j if x==uniq_type[j] else x)

data2 = data[['city']]
encode2 = OneHotEncoder()
encode2.fit(data2)
encode2.transform(data2).toarray()

输出:
array([[1., 0.],
[0., 1.],
[1., 0.]])

对第一列分类特征变成了两列。

相关文章

网友评论

      本文标题:机器学习中的常用编码方式(一)

      本文链接:https://www.haomeiwen.com/subject/hipvuktx.html