标签编码
在监督学习中, 我们通常处理各种标签. 这些可以是数字或单词的形式. 如果它们是数字, 则算法可以直接使用它们. 然而, 很多时候, 标签需要以人类可读的形式. 所以, 人们通常用词语标记训练数据. 标签编码是指将单词标签转换为数字形式, 以便算法可以理解如何对它们进行操作. 让我们来看看如何做到这一点.
怎么做...?
- 创建新文件, 并导入预处理模块:
# coding: utf-8
from sklearn import preprocessing
# 先定义标签编码类
label_encoder = preporcessing.LabelEncoder()
# label_encoder 能够理解文字输入. 先创建一些标签
input_classes = ['audi', 'ford', 'audi', 'toyota', 'ford', 'bmw']
# 处理标签
label_encoder.fit(input_classes)
print ('Class mapping:')
for i, item in enumerate(label_encoder.classes_):
print (item, '-->', i)
# 输出
audi --> 0
bmw --> 1
ford --> 2
toyota --> 3
# 从输出结果可以看出, 文字已经转换成数字. 现在可以转换其他输入了
labels = ['toyota', 'ford', 'audi']
encoded_labels = label_encoder.transform(labels)
print ('Labels =', labels)
print ('Encoded labels =', list(encoded_labels))
# 输出结果
Labels = ['toyota', 'ford', 'audi']
Encoded labels = [3, 2, 0]
# 也可以反向转换
encoded_labels = [2, 1, 0, 3, 1]
decoded_labels = label_encoder.inverse_transform(encoded_labels)
print ('Encoded labels =', encoded_labels)
print ('Decoded labels =', list(decoded_labels))
# 输出
Encoded labels = [2, 1, 0, 3, 1]
Decoded labels = ['ford', 'bmw', 'audi', 'toyota', 'bmw']