【问题标题】:Exception during sklearn prediction: float() argument must be a string or a number, not 'dict' (Error code: 2)sklearn 预测期间的异常:float() 参数必须是字符串或数字,而不是“dict”(错误代码:2)
【发布时间】:2019-11-11 20:05:12
【问题描述】:

我正在尝试学习本教程 (https://cloud.google.com/ml-engine/docs/deploying-models)。

在这里,我试图为我本地目录中的 input_json 预测一个简单模型(泰坦尼克号)的输出。

我被困在进行本地预测的部分,我需要提供一个 input.json。

对于我提供的输入 json,我在 sklearn 预测期间反复收到错误消息:float() 参数必须是字符串或 一个数字,而不是“dict”(错误代码:2)

我的 input.json 文件包含:

{"Pclass" : 3, "SibSp" : 1, "Parch" : 0, "Sex_female" : 0, "Sex_male" : 1}

另外,我已经从训练模型的输入中删除了所有浮点特征,上述特征是唯一用于相同的特征。

【问题讨论】:

  • 提供一些代码和错误(如果有)

标签: python machine-learning google-cloud-platform


【解决方案1】:

Sklearn 不适用于 json。您需要将数据转换为 numpy 数组或 pandas 数据框之类的东西。在这种情况下,熊猫数据框可能更方便。它看起来像这样:

import pandas as pd

# the following line is just to simulate
# pass just your dicts to from_records below
data= [
    {"Pclass" : 3, "SibSp" : 1, "Parch" : 0, "Sex_female" : 0, "Sex_male" : 1},
    {"Pclass" : 3, "SibSp" : 2, "Parch" : 0, "Sex_female" : 1, "Sex_male" : 0},
]

df= pd.DataFrame.from_records(data)

然后传递这个数据框df 来训练你的模型。不要忘记传递您的标签。例如,如果它们是上述 json 文档的一部分(例如 key=survived),您可以像这样训练您的模型:

your_model.fit(df[['PClass', 'SibSp', 'Parch', 'Sex_female', 'Sex_male']], df['survived'])

【讨论】:

    猜你喜欢
    • 2015-05-20
    • 2020-04-24
    • 2023-04-09
    • 2018-02-26
    • 2019-05-22
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    相关资源
    最近更新 更多