如何在Python中进行标签编码(有例子)

535 阅读1分钟

在机器学习中,我们经常想把分类变量转换成某种数字格式,以便于算法使用。

一种方法是通过标签编码,根据字母顺序为每个分类值分配一个整数值。

例如,下面的截图显示了如何将一个名为 "团队"的分类变量中的每个唯一值转换成一个基于字母顺序的整数值:

你可以使用下面的语法来在Python中执行标签编码:

from sklearn.preprocessing import LabelEncoder

#create instance of label encoder
lab = LabelEncoder()

#perform label encoding on 'team' column
df['my_column'] = lab.fit_transform(df['my_column'])

下面的例子显示了如何在实践中使用这种语法。

例子:Python中的标签编码

假设我们有如下的pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   'points': [25, 12, 15, 14, 19, 23, 25, 29]})

#view DataFrame
print(df)

  team  points
0    A      25
1    A      12
2    B      15
3    B      14
4    B      19
5    B      23
6    C      25
7    C      29

我们可以使用下面的代码来执行标签编码,将团队列中的每个分类值转换成一个整数值:

from sklearn.preprocessing import LabelEncoder

#create instance of label encoder
lab = LabelEncoder()

#perform label encoding on 'team' column
df['team'] = lab.fit_transform(df['team'])

#view updated DataFrame
print(df)

   team  points
0     0      25
1     0      12
2     1      15
3     1      14
4     1      19
5     1      23
6     2      25
7     2      29

从输出中我们可以看到:

  • 每个 "A "值都被转换为0
  • 每个 "B "值已被转换为1
  • 每个 "C "值已被转换为2

请注意,你也可以使用inverse_transform()函数来获得团队列的原始值:

#display original team labels
lab.inverse_transform(df['team'])

array(['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'], dtype=object)