zoukankan      html  css  js  c++  java
  • 机器学习实战基础(二):标记编码方法

    前言

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

    详细步骤

    (1) 新建一个Python文件,然后导入preprocessing程序包:

    from sklearn import preprocessin

    (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("
    Class 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("
    Labels =", 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("
    Encoded labels =", encoded_labels)
    print("Decoded labels =", list(decoded_labels)

    结果如下所示:
    Encoded labels = [2, 1, 0, 3, 1]
    Decoded labels = [
    'ford', 'bmw', 'audi', 'toyota', 'bmw'
    ]

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

     

     

     

  • 相关阅读:
    钱多多软件制作04
    团队项目01应用场景
    HDU 4411 arrest
    HDU 4406 GPA
    HDU 3315 My Brute
    HDU 3667 Transportation
    HDU 2676 Matrix
    欧拉回路三水题 POJ 1041 POJ 2230 POJ 1386
    SPOJ 371 BOXES
    POJ 3422 Kaka's Matrix Travels
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12919669.html
Copyright © 2011-2022 走看看