一文读懂Pandas中独热编码

什么是独热编码

独热编码是一种数据预处理步骤,用于将分类值转换为兼容的数值表示。

categorical_columnbool_colcol_1col_2label
value_ATrue940
value_BFalse720
value_DTrue950
value_DFalse831
value_DFalse901
value_DFalse541
value_BTrue811
value_DTrue661
value_CTrue050

例如,在这个虚拟数据集中,分类列具有多个字符串值。许多机器学习算法要求输入数据为数值形式,因此需要某种方法将此数据属性转换为与此类算法兼容的形式,本文将分类列分解为多个二进制值列。 

使用Pandas库进行独热编码

首先,将.csv文件或任何其他相关文件读入Pandas数据帧。

df = pd.read_csv("data.csv")

为了检查唯一值并更好地理解数据,可以使用以下Panda函数。

df['categorical_column'].nunique()
df['categorical_column'].unique()

对于这些虚拟数据,函数会返回以下输出结果:

>>> 4
>>> array(['value_A', 'value_C', 'value_D', 'value_B'], dtype=object)

对于分类列,可以将其分解为多个列,为此本文使用pandas.get_dummies()方法。它需要以下参数:

参数
data:类似数组、Series或DataFramePandas的原始数据帧对象
columns:类似列表,默认为None要进行独热编码的分类列列表
drop_first:布尔值,默认为False移除分类标签的第一个级别

为了更好地理解这个函数,让我们来对这个虚拟数据集进行一次独热编码。

  • 对分类列进行独热编码

我们使用get_dummies方法,并将原始数据帧作为数据输入,在columns中,我们传入一个只包含categorical_column标题的列表。

df_encoded = pd.get_dummies(df, columns=['categorical_column', ])

以下命令删除了categorical_column,并为每个唯一值创建了一个新列。因此,单个分类列被转换为4个新列,其中只有一个列的值为1,其他3个列的值为0,这就是为什么它被称为独热编码。

categorical_column_value_Acategorical_column_value_Bcategorical_column_value_Ccategorical_column_value_D
1000
0100
0001
0001
0001
0001
0100
0001
0010
0001

当想要对布尔列进行独热编码时,问题就出现了,其创建了两个新列。

  • 对二进制列进行独热编码
df_encoded = pd.get_dummies(df, columns=[bool_col, ])
bool_col_Falsebool_col_True
01
10
01
10

不必增加一列,而是可以只有一列,其中True被编码为1False被编码为0。为了解决这个问题,可以使用drop_first参数。

df_encoded = pd.get_dummies(df, columns=['bool_col'], drop_first=True)
bool_col_True
1
0
1
0

结论

对虚拟数据集进行独热编码,最终结果如下所示:

col_1col_2boolABCDlabel
94110000
72001000
95100010
83000011
90000011
54000011
81101001
66100011
05100100
18100010

分类值和布尔值已转换为可以作为机器学习算法输入的数值。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python慕遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值