在机器学习中,我们经常想把分类变量转换成某种数字格式,以便于算法使用。
一种方法是通过标签编码,根据字母顺序为每个分类值分配一个整数值。
例如,下面的截图显示了如何将一个名为 "团队"的分类变量中的每个唯一值转换成一个基于字母顺序的整数值:

你可以使用下面的语法来在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)