【问题标题】:Sklearn Label Encoder - Not getting desired output based on prediction and inverse transformSklearn 标签编码器 - 基于预测和逆变换未获得所需的输出
【发布时间】:2022-01-18 17:43:16
【问题描述】:

我是使用 scikit 的 Python ML 的新手。我正在研究一种解决方案来创建一个包含三列 Pets、Owner 和 location 的模型。

import pandas
import joblib
from sklearn.tree import DecisionTreeClassifier
from collections import defaultdict
from sklearn import preprocessing 

df = pandas.DataFrame({
    'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'], 
    'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'], 
    'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego', 
                 'New_York']
})

现在,我使用标签编码器对整个数据帧进行编码。

le = preprocessing.LabelEncoder()
df_encoded = df.apply(le.fit_transform)
df_array=df_encoded.values

现在,我将编码数组拆分为输入集(宠物和所有者)和输出集(位置)

IpSet = df_array[:,0:2]
Opset = df_array[:,2:3]

然后,我创建了一个新的决策树分类器模型并拟合输入和输出集。

model = DecisionTreeClassifier()
model.fit(IpSet,Opset)

现在,我正在尝试使用新数据框的模型来预测位置。我使用的标签编码器与之前使用的相同。

df_Predict = pandas.DataFrame({
    'pets': ['cat'], 
    'owner': ['Champ']})
df_encoded_Predict = df_Predict.apply(le.fit_transform)
predictions_train = model.predict(df_encoded_Predict)
print(le.inverse_transform(predictions_train)[:1])

有了这个,我期待看到“圣地亚哥”的价值。不确定,为什么我会得到“冠军”作为输出。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 不要在您的测试数据上使用fit 转换器,您只需在输入上调用fitfit_transform。然后在预测的时候,你打电话给trasform 用合适的变压器
  • 另外,你应该使用le.fit_transform(df) 而不是df.apply(...)
  • @G.Anderson,我不认为我在关注你。 1)您能否仅针对输入给出 fit_transform 的逻辑。我是否应该在标签编码之前将 df 转换为输入和 opset? 2)当我做 le.fit_transform(df) 时,它只适用于一维数组。我正在尝试对整个输入集进行标签编码。
  • 我认为你应该参考LabelEncoder的API,这样你就可以知道如何将fit标签应用到测试数据上。

标签: python scikit-learn predict label-encoding inverse-transform


【解决方案1】:

您遵循的逻辑不正确。

    df_encoded = df.apply(le.fit_transform)

这里,为每一列拟合的相同编码器 (le) 和此行执行 le 的末尾只有位置信息。

当你需要使用已经安装好的编码器时,使用 .transform() 方法而不是跟随。

       df_encoded_Predict = df_Predict.apply(le.fit_transform)

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2021-10-04
    • 2018-05-11
    • 2016-11-19
    • 2018-11-29
    相关资源
    最近更新 更多