如何获得单个数据条目的预测
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 突变中的条目列表?