![](https://csdnimg.cn/release/download_crawler_static/87757269/bg5.jpg)
1.3 标记编码方法 5
1
2
3
4
5
12
6
7
9
8
10
10
(2) 这个程序包包含许多数据预处理需要的函数。定义一个标记编码器(label encoder),代
码如下所示:
label_encoder = preprocessing.LabelEncoder()
(3) label_encoder对象知道如何理解单词标记。接下来创建一些标记:
input_classes = ['audi', 'ford', 'audi', 'toyota', 'ford', 'bmw']
(4) 现在就可以为这些标记编码了:
label_encoder.fit(input_classes)
print "\nClass mapping:"
for i, item in enumerate(label_encoder.classes_):
print item, '-->', i
(5) 运行代码,命令行工具中显示下面的结果:
Class mapping:
audi --> 0
bmw --> 1
ford --> 2
toyota --> 3
(6) 就像前面结果显示的那样,单词被转换成从0开始的索引值。现在,如果你遇到一组标记,
就可以非常轻松地转换它们了,如下所示:
labels = ['toyota', 'ford', 'audi']
encoded_labels = label_encoder.transform(labels)
print "\nLabels =", labels
print "Encoded labels =", list(encoded_labels)
命令行工具中将显示下面的结果:
Labels = ['toyota', 'ford', 'audi']
Encoded labels = [3, 2, 0]
(7) 这种方式比纯手工进行单词与数字的编码要简单许多。还可以通过数字反转回单词的功
能检查结果的正确性:
encoded_labels = [2, 1, 0, 3, 1]
decoded_labels = label_encoder.inverse_transform(encoded_labels)
print "\nEncoded labels =", encoded_labels
print "Decoded labels =", list(decoded_labels)
结果如下所示:
Encoded labels = [2, 1, 0, 3, 1]
Decoded labels = ['ford', 'bmw', 'audi', 'toyota', 'bmw']
可以看到,映射结果是完全正确的。