对分类特征做编码
作用:将分类型数据转换成连续的数值型变量。即是对不连续的数字或者文本进行编号。
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编码。