• 处理类标数据


    生成类标数据:

    import pandas as pd
    
    # 生成类别数据
    df = pd.DataFrame([
        ["green", "M", 10.1, "class1"],
        ["red", "L", 13.5, "class2"],
        ["blue", "XL", 15.3, "class1"]
        ])
    df.columns = ["color", "size", "price", "classlabel"]
    print(df)

      运行结果:

      

    有序特征的映射:

    1 size_mapping = {
    2     "XL": 3,
    3     "L": 2,
    4     "M": 1,
    5 }
    6 df["size"] = df["size"].map(size_mapping)
    7 print(df)

       运行结果:

      

      可以通过size_mapping映射回去

    1 # 通过size_mapping映射回去
    2 inv_size_mapping = {v: k for k, v in size_mapping.items()}
    3 df["size"] = df["size"].map(inv_size_mapping)
    4 print(df)

      运行结果:

      

     类标的编码:

      可以简单地从0开始设置类标

    1 import numpy as np
    2 class_mapping = {label: idx for idx, label in enumerate(np.unique(df["classlabel"]))}
    3 print(class_mapping)
    4 df["classlabel"] = df["classlabel"].map(class_mapping)
    5 print(df)

      运行结果:

      

      同样我们可以使用键值对倒置还原类标

    1 inv_class_mapping = {v: k for k, v in class_mapping.items()}
    2 df["classlabel"] = df["classlabel"].map(inv_class_mapping)
    3 print(df)

      

      使用scikit-learn中的LabelEncoder类完成类标的编码

    1 from sklearn.preprocessing import LabelEncoder
    2 class_le = LabelEncoder()
    3 df["classlabel"] = class_le.fit_transform(df["classlabel"].values)
    4 print(df)
    5 # 可以使用inverse_transfrom()还原类标
    6 df["classlabel"] = class_le.inverse_transform(df["classlabel"])
    7 print(df)

      遇到警告可以使用下面的代码忽略警告

    1 import warnings
    2 warnings.filterwarnings('ignore')

      运行结果:

      

     标称特征上的独热编码

    1 from sklearn.preprocessing import OneHotEncoder
    2 x = df[["color", "size", "price"]].values
    3 color_le = LabelEncoder()
    4 x[:, 0] = class_le.fit_transform(x[:, 0])
    5 # categorical_features来选定矩阵的列;toarray方法将其转化为一个numpy数组
    6 ohe = OneHotEncoder(categorical_features=[0])
    7 x = ohe.fit_transform(x).toarray()
    8 print(x)

      运行结果:

      

      我们可以使用get_dummies更加方便地实现独热编码

    1 print(df)
    2 print(pd.get_dummies(df))

      运行结果:

      

      这里要注意如果类标classlael也是和标称特征一样,则 get_dummies 会使类标也进行独热编码,而这不是我们希望做的!!!

    清澈的爱,只为中国
  • 相关阅读:
    改变原数组的filter
    fireEvent2
    Ajaxを勉強しよ
    javascript 地图
    fillZero函数
    window.onerror
    とある要素以下にある textNode で一致する textNode を XPath で高速に取り出す
    判定是否为表单元素
    Django中判断用户是否登陆
    【 如果你和我一样在一栋33层大厦的27层工作,在这栋大厦里发生了火灾,那么你该怎么办? 看看也许会保住你的性命!!!】
  • 原文地址:https://www.cnblogs.com/dan-baishucaizi/p/9103934.html
Copyright © 2020-2023  润新知