作用:將分類型數據轉換成連續的數值型變量。即是對不連續的數字或者文本進行編號。
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編碼。
