标签编码器如何分配相同的数字?

问题描述

我的数据框中有一列

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'])

解决方法

您需要使用 fitfit_transform 来拟合编码器,然后在要编码的数据上使用 transform 以获得标签(如果您在那个数据,它会重新拟合编码器,如果你只传递一个值,它会被编码为 0):

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