pandas 独热编码

pandas 独热编码

pandas 独热编码

独热编码(One-Hot Encoding)是一种常用的数据预处理技术,特别在机器学习领域中。在使用机器学习算法时,经常会遇到分类变量,这些变量并不能直接输入到模型中,需要将其转换为数字形式。而独热编码正是一种将分类变量转换为数字形式的有效技术。在Python中,使用pandas库能够方便快速地进行独热编码。

什么是独热编码

独热编码是一种将非数字型的数据转换为数字型的方法,通常用于处理分类数据。它将一个有n个不同取值的分类特征转换为一个n维的向量,只有一个维度的值为1,其他维度的值为0。

举个示例,假设我们有一个特征“颜色”,它有三个可能的取值:红、绿、蓝。在独热编码之后,我们将得到以下向量:

  • 红:[1, 0, 0]
  • 绿:[0, 1, 0]
  • 蓝:[0, 0, 1]

这样,我们就将原始的非数字型数据转换为了数字型数据,方便模型的处理。

pandas 实现独热编码

在pandas中,我们可以使用get_dummies函数来进行独热编码。get_dummies函数会自动将DataFrame中的分类变量转换为独热编码形式。

下面我们通过一个示例来演示如何使用pandas进行独热编码。假设我们有如下的数据集:

import pandas as pd

data = {
    'color': ['red', 'green', 'blue', 'red', 'green'],
    'size': ['S', 'M', 'L', 'XL', 'M'],
    'price': [10, 20, 30, 40, 50]
}

df = pd.DataFrame(data)
print(df)

运行以上代码,我们可以得到如下的DataFrame:

   color size  price
0    red    S     10
1  green    M     20
2   blue    L     30
3    red   XL     40
4  green    M     50

其中,colorsize为分类变量,我们可以使用get_dummies函数进行独热编码:

df_encoded = pd.get_dummies(df, columns=['color', 'size'])
print(df_encoded)

运行以上代码,我们将得到进行独热编码后的DataFrame:

   price  color_blue  color_green  color_red  size_L  size_M  size_S  size_XL
0     10          0           0          1       0       0       1        0
1     20          0           1          0       0       1       0        0
2     30          1           0          0       1       0       0        0
3     40          0           0          1       0       0       0        1
4     50          0           1          0       0       1       0        0

可以看到,colorsize分别被转换成了独热编码形式,方便模型的处理。

处理多分类特征

有时候,我们的分类特征可能拥有大于2个以上的分类。在这种情况下,get_dummies函数默认会将每个分类特征的所有可能取值都进行独热编码,导致生成了大量的新特征。为了避免这种情况,我们可以使用drop_first=True参数,让pandas自动删除每个分类特征的第一个值。

data = {
    'color': ['red', 'green', 'blue', 'red', 'green'],
    'size': ['S', 'M', 'L', 'XL', 'M'],
    'label': ['A', 'B', 'A', 'B', 'B']
}

df = pd.DataFrame(data)
df_encoded = pd.get_dummies(df, columns=['color', 'size', 'label'], drop_first=True)
print(df_encoded)

运行以上代码,我们会得到如下进行独热编码后的DataFrame:

   color_green  color_red  size_M  size_S  size_XL  label_B
0            0          1       0      1       0        0
1            1          0       1      0       0        1
2            0          0       0      0       0        0
3            1          0       0      0       1        1
4            0          1       1      0       0        1

可以看到,每个特征的第一个取值都被删除了,只保留了剩下的n-1个取值,减少了冗余特征的数量。

总结

独热编码是处理分类数据的一种有效方法,能够将非数字型的分类数据转换为数字型数据。在Python中,我们可以使用pandas库中的get_dummies函数快速进行独热编码,方便机器学习模型的处理。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程