如何获得单个数据条目的预测

Posted

技术标签:

【中文标题】如何获得单个数据条目的预测【英文标题】:How to get prediction for a single data entry 【发布时间】:2019-11-29 12:01:12 【问题描述】:

我有一个训练有素的模型存储在 pickle 中。我需要做的就是在 pandas 中获取一个单值数据框,并通过将其传递给模型来获得预测。

为了处理分类列,我使用了单热编码。因此,为了将 pandas 数据帧转换为 numpy 数组,我还在单值数据帧上使用了单热编码。但它显示了我的错误。

import pickle
import category_encoders as ce
import pandas as pd

pkl_filename = "pickle_model.pkl"

with open(pkl_filename, 'rb') as file:
    pickle_model = pickle.load(file)

ohe = ce.OneHotEncoder(handle_unknown='ignore', use_cat_names=True)
X_t = pd.read_pickle("case1.pkl")
X_t_ohe = ohe.fit_transform(X_t)
X_t_ohe = X_t_ohe.fillna(0)
Ypredict = pickle_model.predict(X_t_ohe)
print(Ypredict[0])

Traceback(最近一次调用最后一次): 文件“Predict.py”,第 14 行,在 Ypredict = pickle_model.predict(X_t_ohe) 预测中的文件“/home/neo/anaconda3/lib/python3.6/site-> packages/sklearn/linear_model/base.py”,第 289 行 分数 = self.decision_function(X) 文件“/home/neo/anaconda3/lib/python3.6/site-packages/sklearn/linear_model/base.py”,第 270 行,在决策函数中 % (X.shape[1], n_features)) ValueError:X 每个样本有 93 个特征;期待 989

【问题讨论】:

你也可以分享你的训练脚本吗? 【参考方案1】:

发生这种情况是因为 OneHotEncoder 实际上将您的数据框转换为许多不同的数值列,并且您的 pickle 模型实际上具有来自原始文件的训练模型,该模型没有相同的维度(相同的列数)

要纠正此问题,您需要在应用 one-hot-encoder 后重新训练模型,然后将其保存为 pickle 文件并重复使用该模型。

【讨论】:

以上是关于如何获得单个数据条目的预测的主要内容,如果未能解决你的问题,请参考以下文章

使用单个查询获取每个多个日期间隔的条目数

FaunaDB - 如何批量更新单个 graphQL 突变中的条目列表?

如何根据 XSD 模式验证 XML 结构的单个条目

如何获得一个未展平的多选值数组和单个输入?

如何使用 R 而不是整个数据表更改 excel 文件中的单个条目?

R:如何为预测模型制作混淆矩阵?