• sklearn.preprocessing.LabelEncoder的使用


    在训练模型之前,我们通常都要对训练数据进行一定的处理。将类别编号就是一种常用的处理方法,比如把类别“男”,“女”编号为0和1。可以使用sklearn.preprocessing中的LabelEncoder处理这个问题。

    作用

    将n个类别编码为0~n-1之间的整数(包含0和n-1)。

    例子

    假设我们要对性别数据进行编码,则数据可以分为两种情况:无NaN,有NaN。
    首先导入要使用的包

    import numpy as np
    import pandas as pd 
    from sklearn import preprocessing
    

    无NaN

    数据如下

    sex = pd.Series(["male", "female", "female", "male"])
    

    使用LabelEncoder进行处理,过程如下

    le = preprocessing.LabelEncoder()    #获取一个LabelEncoder
    le = le.fit(["male", "female"])      #训练LabelEncoder, 把male编码为0,female编码为1
    sex = le.transform(sex)                #使用训练好的LabelEncoder对原数据进行编码
    print(sex)
    

    输出:

    [1 0 0 1]
    

    可以看到LabelEncoder将源数据中用字符串表示的类别编码成int型的数字,便于训练。
    根据编码后的类别还可以获取编码前的类别:

    le.inverse_transform([1,0,0,1])
    

    输出:

    array(['male', 'female', 'female', 'male'], dtype='<U6')
    

    有NaN

    假如数据中包含NaN,如下

    sex = pd.Series(["male", "female", "female", np.nan])
    

    这时执行

    le = preprocessing.LabelEncoder()    #获取一个LabelEncoder
    le = le.fit(["male", "female"])      #训练LabelEncoder, 把male编码为0,female编码为1
    sex = le.transform(sex)                #使用训练好的LabelEncoder对原数据进行编码
    print(sex)
    

    就会出错

    ValueError: y contains previously unseen labels: nan
    

    解决方法也很简单,只要把NaN替换掉就行了

    sex.fillna("unknown", inplace=True)
    
    le = preprocessing.LabelEncoder()    #获取一个LabelEncoder
    le = le.fit(["male", "female", "unknown"])      #训练LabelEncoder, 把male编码为0,female编码为1, unknown为2
    sex = le.transform(sex)                #使用训练好的LabelEncoder对原数据进行编码
    print(sex)
    

    输出:

    [1 0 0 2]
    

    这里将NaN替换为unkown,将unknown加入le.fit中,这样unknown就会被编码为2了。

    总结

    sklearn.preprocessing.LabelEncoder可以简单方便地将数据中的类别编码。

  • 相关阅读:
    DirectX 龙书 混合 理解
    火影 雏田
    草帽第十人为什么是甚平
    Agile Development(敏捷开发)
    用例图
    Cache Object Script 学习之二(转载)
    Error link 1107:invalid or corrupt file:can't read at 0x2A8
    孙沈清动词按活用形的分类
    Mac 如何访问linux
    在Mac OS X中配置Apache + PHP + MySQL
  • 原文地址:https://www.cnblogs.com/sench/p/10134094.html
Copyright © 2020-2023  润新知