• 机器学习实战基础(二):标记编码方法


    前言

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

    详细步骤

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

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

     

     

     

  • 相关阅读:
    Windows Server 2003服务器.net4.0+IIS6.0的服务器,IE11浏览器访问的不兼容性
    SVN标准目录结构
    关于SVN 目录结构,使用教程
    Visio编辑数据库模型列
    IIS 8.5配置.net网站[花了半个多小时]
    调试存储过程
    generate the next AttestationNumber, 格式是ICD-EPRG-DEV-0000000001,ICD-EPRG-DEV-0000000002
    构建布局良好的Windows程序
    初始window程序
    使用ADO.NET访问数据库查询和操作数据
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12919669.html
Copyright © 2020-2023  润新知