get_dummies 是利用pandas实现one hot encode的方式。详细参数请查看官方文档
使用:
pandas.get_dummies(data, prefix=None, prefix_sep=’_’, dummy_na=False, columns=None, sparse=False, drop_first=False)[source]
参数说明:
-
data : array-like, Series, or DataFrame 输入的数据
-
prefix : string, list of strings, or dict of strings, default None。get_dummies转换后,列名的前缀
-
columns : list-like, default None。指定需要实现类别转换的列名
-
dummy_na : bool, default False,增加一列表示空缺值,如果False就忽略空缺值
-
drop_first : bool, default False,获得k中的k-1个类别值,去除第一个。
eg:
import pandas as pd
df = pd.DataFrame([
['green' , 'A'],
['red' , 'B'],
['blue' , 'A']])
df.columns = ['color', 'class']
pd.get_dummies(df)
get_dummies 前:
get_dummies 后:
有需要注意的是:
1、当Series里存在整数时,使用get_dummies按照one-hot进行编码,但是在DataFrame里面存在整数时不会
(这里C列没有进行编码)
(这里数字列进行了编码)
============================================
one hot encode:独热编码
当分类特征是离散的,无序的时(如性别有男、女,城市有北京,上海,深圳等),采用独热编码对数据进行处理。具体见参考1
哑变量:也叫虚拟变量,引入哑变量的目的是,将不能够定量处理的变量量化。如季节对某些产品(如冷饮)销售的影响等等。 这种“量化”通常是通过引入“哑变量”来完成的。
eg:哑变量处理
一些分类变量,例如季节、天气、月份。要在我们的模型中包含这些数据,需要用 Pandas 库中的 get_dummies()进行处理。
dummy_fields = ['season', 'weathersit', 'mnth', 'hr', 'weekday']
for each in dummy_fields:
dummies = pd.get_dummies(rides[each], prefix=each, drop_first=False) #实现实现one hot encode
rides = pd.concat([rides, dummies], axis=1) #合并
fields_to_drop = ['instant', 'dteday', 'season', 'weathersit',
'weekday', 'atemp', 'mnth', 'workingday', 'hr']
data = rides.drop(fields_to_drop, axis=1) #删除原来的
data.head()
==========================================
参考: