對分類特征做編碼


作用:將分類型數據轉換成連續的數值型變量。即是對不連續的數字或者文本進行編號。

import pandas as pd
#先創建一個數據框(包含缺失值)
df = pd.DataFrame({'auth':['spring','summer','fall','spring'],
                   'sply':['a','c','a','b'],
                   'name':['zhangsan','lisi','xiaohua','xiaomei']})
df
Out[124]: 
     auth sply      name
0  spring    a  zhangsan
1  summer    c      lisi
2    fall    a   xiaohua
3  spring    b   xiaomei

categorical_name = ['auth','sply','name']

#定義一個循環函數,處理分類型特征,進行標簽編碼
def categorical_preprocessing(dataset,categorical_feature):
    '''
    param:
        dataset:DataFrame,輸入的數據集
        categorical_feature:list,分類特征列名
    '''
    for feature in categorical_feature:
        set_feature = set(dataset[feature])#將特征映射到集合中
        dic_feature = {}
        for i ,feat in enumerate(set_feature):
            dic_feature[feat] = i
        dataset[feature] = dataset[feature].map(dic_feature)
    dataset = pd.get_dummies(dataset,columns=categorical_feature)
return dataset #處理分類特征編碼 dataset = categorical_preprocessing(df,categorical_name)
#分類變量編碼結果
dataset
Out[74]: 
   auth_0  auth_1  auth_2  sply_0   ...    name_0  name_1  name_2  name_3
0       0       1       0       0   ...         1       0       0       0
1       0       0       1       0   ...         0       0       1       0
2       1       0       0       0   ...         0       0       0       1
3       0       1       0       1   ...         0       1       0       0

補充:

標簽編碼完成后一般都需要再進行一次one-hot編碼,變成只包含0和1的數據。

如果變量含有順序,如:優、良、差。可以省略one-hot編碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM