📜  将熊猫分类数据转换为 numerica (1)

📅  最后修改于: 2023-12-03 15:09:38.431000             🧑  作者: Mango

将熊猫分类数据转换为数字型数据

如果您的数据集包含分类(离散)变量,您需要将这些变量转换为数字型,以便于分析和建模。在这篇教程中,我们将介绍几种将熊猫分类数据转换为数字型的方法。

1. Label Encoding

Label Encoding 是将每个类别赋予一个数字的简单方法。熊猫库中有一个 LabelEncoder 类,它很容易使用。

from sklearn.preprocessing import LabelEncoder
import pandas as pd

df = pd.DataFrame({'animal': ['cat', 'dog', 'fish', 'cat', 'dog']})

le = LabelEncoder()
df['animal_encoded'] = le.fit_transform(df['animal'])

print(df)

输出为:

  animal  animal_encoded
0    cat               0
1    dog               1
2   fish               2
3    cat               0
4    dog               1

在这个例子中,每个动物都分配了一个数字,而 cat 是 0,dog 是 1,fish 是 2。然而,Label Encoding 有一个潜在的问题,即数字之间的顺序可能会被算法误解,因此它只适用于标签之间没有大小关系的情况。

2. One-Hot Encoding

One-Hot Encoding 是将每个类别转换为二元向量的一种方法。例如,如果我们的数据集包含三个类别 cat、dog 和 fish,则将每个值转换为一个三元向量,并将属于该类别的位置设置为 1,其余位置设置为 0,即 cat = [1, 0, 0],dog = [0, 1, 0],fish = [0, 0, 1]。

熊猫库有一个 get_dummies 函数,它帮助我们轻松地实现 One-Hot Encoding。

import pandas as pd

df = pd.DataFrame({'animal': ['cat', 'dog', 'fish', 'cat', 'dog']})

one_hot = pd.get_dummies(df['animal'])

print(one_hot)

输出为:

   cat  dog  fish
0    1    0     0
1    0    1     0
2    0    0     1
3    1    0     0
4    0    1     0

在这个例子中,我们将每个动物转换为二元向量,并分配给新的 DataFrame。

3. Binary Encoding

Binary Encoding 是将整数值转换为二进制码向量的一种方法。例如,如果我们有一个包含 5 个类别的数据集,则可以使用二进制编码将其转换为 3 位二进制码:000、001、010、011 和 100。

对于二进制编码的实现,我们需要使用 Python 库 Category Encoders。它可以轻松地将离散变量转换为数字型。

!pip install category_encoders

import pandas as pd
import category_encoders as ce

df = pd.DataFrame({'animal': ['cat', 'dog', 'fish', 'cat', 'dog']})

encoder = ce.BinaryEncoder(cols=['animal'])
df_binary = encoder.fit_transform(df)

print(df_binary)

输出为:

   animal_0  animal_1  animal_2
0         0         0         1
1         0         1         0
2         0         1         1
3         0         0         1
4         0         1         0

在这个例子中,我们使用 BinaryEncoder 类将分类变量转换为数字型。结果是一个新的 DataFrame,其中每个变量都表示其对应的包含二进制值的向量。

无论您使用哪种方法,数据预处理对于成功的机器学习模型至关重要。通过将分类变量转换为数字型,您的数据集传递给机器学习算法后会更容易进行分析和建模。

参考资料
  • https://www.analyticsvidhya.com/blog/2020/03/one-hot-encoding-vs-label-encoding-using-scikit-learn/
  • https://www.kaggle.com/shashwatwork/encoding-techniques-for-categorical-variables