zoukankan      html  css  js  c++  java
  • 【火炉炼AI】机器学习002-标记编码方法

    【火炉炼AI】机器学习002-标记编码方法

    (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

    监督学习中的标记的形式有各种各样,比如对于人脸识别的标记,可能是[“小红”,“小花”,“翠花”。。。],这些标记对于机器学习来说,如同天书一般,故而为了让机器学习“看懂”这些标记,需要将这些文本类的标记进行一定的编码,形成比如【3,2,4,0,…】等形式.


    1. 编码方法

    有很多python模块可以实现对标记进行编码,此处使用scikit-learn模块中的preprocessing包来进行编码。Talk is cheap, just show me the code….

    # *****************对label进行编码********************************
    from sklearn import preprocessing
    
    # 构建编码器
    encoder=preprocessing.LabelEncoder() # 先定义一个编码器对象
    raw_labels=['翠花','张三','王宝强','芙蓉姐姐','凤姐','王宝强','凤姐']
    encoder.fit(raw_labels) # 返回自己的一个实例
    print('编码器列表:{}'.format(encoder.classes_)) # 返回编码器中所有类别,已经排除了重复项
    for index,item in enumerate(encoder.classes_):
        print('{} --> {}'.format(item,index))
        
    # 使用编码器来编码新样本数据
    need_encode_labels=['王宝强','芙蓉姐姐','翠花']
    # need_encode_labels=['王宝强','芙蓉姐姐','翠花','无名氏'] 
    # '无名氏'不存在编码器列表中,会报错
    encoded_labels=encoder.transform(need_encode_labels)
    print('
    编码之前的标记:{}'.format(need_encode_labels))
    print('编码之后的标记:{}'.format(encoded_labels))
    
    # 使用编码器将编码数字解码成原来的文本标记,注意最大值不能超过编码器中的长度
    encoded=[1,3,0,4]
    # encoded=[1,3,0,4,5] # 5不存在与编码器中,故报错
    decoded_labels=encoder.inverse_transform(encoded)
    print('
    已经编码的标记代码:{}'.format(encoded))
    print('解码后的标记:{}'.format(decoded_labels))
    

    -------------------------------------输---------出--------------------------------

    编码器列表:['凤姐' '张三' '王宝强' '翠花' '芙蓉姐姐']
    凤姐 --> 0
    张三 --> 1
    王宝强 --> 2
    翠花 --> 3
    芙蓉姐姐 --> 4

    编码之前的标记:['王宝强', '芙蓉姐姐', '翠花']
    编码之后的标记:[2 4 3]

    已经编码的标记代码:[1, 3, 0, 4]
    解码后的标记:['张三' '翠花' '凤姐' '芙蓉姐姐']

    --------------------------------------------完-------------------------------------

    ########################小**********结###############################

    1,使用sklearn的preprocessing模块对标记进行编码是非常简单的,首先构建一个基于所有标记数据的编码器,然后使用该编码器进行编码或解码

    2,需要注意,在编码时,如果遇到编码器中没有的标记时会报错,在解码时也一样。

    #################################################################


    注:本部分代码已经全部上传到(我的github)上,欢迎下载。

    参考资料:

    1, Python机器学习经典实例,Prateek Joshi著,陶俊杰,陈小莉译

  • 相关阅读:
    总结几个面试题
    产生下一个排列数的算法
    所谓码农
    简记微软实习生面试
    二维数组作为函数的参数传递
    详细解说 STL 排序(Sort)
    copy()之绝版应用
    STL标准模板库(简介)
    访问控制和继承方式
    常用软件开发模型比较分析
  • 原文地址:https://www.cnblogs.com/RayDean/p/9764340.html
Copyright © 2011-2022 走看看