📜  将分类变量转换为数值 python (1)

📅  最后修改于: 2023-12-03 14:53:47.727000             🧑  作者: Mango

将分类变量转换为数值

在许多情况下,我们需要将分类变量转换为数值,以便进行机器学习和数据分析等操作。本文将介绍在Python中将分类变量转换为数值的几种方法。

1. 使用 sklearn.preprocessing.LabelEncoder

sklearn.preprocessing.LabelEncoder 是一种将标签分配给数据集中的不同类别的编码器。通过此编码器,我们可以将分类变量转换为数值。下面是示例代码:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
data['category'] = le.fit_transform(data['category'])

在上面的代码中,我们首先从 sklearn.preprocessing 中导入 LabelEncoder,然后创建一个编码器 le。我们使用 fit_transform 函数对数据集中的 category 列进行编码。最后,我们将编码后的值保存回 category 列。

2. 使用 pandas.factorize

pandas.factorize 是一种将分类变量转换为数值的方法。下面是示例代码:

import pandas as pd

data['category'] = pd.factorize(data['category'])[0]

在上面的代码中,我们首先导入 pandas,然后使用 factorize 函数将 category 列中的值进行编码,同时返回编码后的结果并将其保存回 category 列。注意,factorize 函数返回的是一个元组,其中第一个元素是编码后的结果,我们使用 [0] 取出第一个元素即可。

3. 使用 sklearn.preprocessing.OneHotEncoder

sklearn.preprocessing.OneHotEncoder 是一种将分类变量转换为数值的编码器,它将每个分类变量扩展为二进制向量。下面是示例代码:

from sklearn.preprocessing import OneHotEncoder

ohe = OneHotEncoder(sparse=False)
data_ohe = ohe.fit_transform(data[['category']])
data = pd.concat([data.drop('category', axis=1), pd.DataFrame(data_ohe)], axis=1)

在上面的代码中,我们首先从 sklearn.preprocessing 中导入 OneHotEncoder,然后创建一个编码器 ohe。我们使用 fit_transform 函数将数据集中的 category 列扩展为二进制向量,并将其保存到 data_ohe 中。最后,我们将 data_ohe 添加到原始数据集中并删除 category 列。

总结

本文介绍了在Python中将分类变量转换为数值的三种方法,分别是 sklearn.preprocessing.LabelEncoderpandas.factorizesklearn.preprocessing.OneHotEncoder。这些方法都非常简单易用,可根据实际情况选择合适的方法。