首页 > 解决方案 > 标签编码器如何分配相同的数字?

问题描述

我的数据框中有该列

city 

London
Paris
New York 
.
.

我是对列进行编码的标签,它将 0 分配给 London , 1 分配给 Paris , 2 分配给 New York 。但是,当我从模型中传递单个值进行预测时,我给出了城市名称 New York 并将 0 分配给它。它应该如何保持不变,我希望如果纽约值在训练阶段通过标签编码器分配 2,它应该在预测时再次分配 2。

Code
from sklearn.preprocessing import LabelEncoder
labelencoder=LabelEncoder()
df['city']=labelencoder.fit_transform(df['city'])

标签: pythonpandasdataframemachine-learninglabel-encoding

解决方案


您需要使用fitfit_transform拟合编码器,然后transform在要编码的数据上获取标签(如果您fit_transform对该数据执行此操作,它将重新拟合编码器,如果您只传递一个值,它将被编码作为0):

df['label'] = labelencoder.fit_transform(df['city'])
# df
#        city  label
# 0    London      0
# 1     Paris      2
# 2  New York      1
labelencoder.transform(['New York'])
# array([1])

推荐阅读