标记编码方法

标记编码方法

在监督学习中,经常需要处理各种各样的标记。这些标记可能是数字,也可能是单词。如果标记是数字,那么算法可以直接使用它们,但是,许多情况下,标记都需要以人们可理解的形式存在,因此,人们通常会用单词标记训练数据集。标记编码就是要把单词标记转换成数值形式,让算法懂得如何操作标记。接下来看看如何标记编码。详细步骤如下

一、导人 preprocessing程序包

from sklearn import preprocessing

这个程序包包含许多数据预处理需要的函数。

二、定义一个标记编码器。

代码如下所示:

label encoder= preprocessing Label Encoder()

label_ encoder对象知道如何理解单词标记。接下来要创建一些标记。

三、创建一些标记:

input_classes =[' audi',' ford,'audi',' toycta','ford','bmw']

(4)现在就可以为这些标记编码了:

四、标记编码:

label_encoder.fit(input_class)

print("\nClass mapping:")

for i, item in enumerate(label_encoder.classes_):

print(item, '-->', i)

运行代码,命令行工具中显示下面的结果:

Class mapping:

audi -->0

bmw --> 1

fordtoyota -->3

五、标记转换

就像前面结果显示的那样,单词被转换成从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]

六、 反转检查

这种方式比纯手工进行单词与数字的编码要简单许多。还可以通过数字反转回单词的功查结果的正确性

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']

可以看到,映射结果是完全正确的。


分享到:


相關文章: