【问题标题】:How does Label Encoder assigns the same number?标签编码器如何分配相同的数字?
【发布时间】:2021-07-31 00:19:07
【问题描述】:

我的数据框中有该列

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

【问题讨论】:

    标签: python pandas dataframe machine-learning label-encoding


    【解决方案1】:

    您需要使用fit 或fit_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])
    

    【讨论】:

    • 如果纽约也存在于另一列中怎么办! , 会重新赋值这一列还是那一列的值
    • @Haseeb 您指定用于拟合数据的列,因此它不会受到其他列的影响(在我们的例子中,它将编码来自city 列的值,因为我们正在执行@987654328 @)
    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多