保存和加载ML模型

时间:2018-08-27 15:22:15

标签: python machine-learning pickle production-environment dev-to-production

我有一个机器学习模型,在我适应它后将其另存为泡菜:

saved_model = open (path+"clustering_model.pkl", "wb")
pickle.dump(cluster, saved_model)
saved_model.close()

我能够通过导入预测方法将其加载回并从其他python文件进行测试:

我创建了一个测试输入:

processed_responses = {"C1": ["low"], "C2": ["high"],
"C3": ["low"], "C4": ["low"], "C5": ["low"], "C6": ["low"]}

test_data_frame = pd.DataFrame(data = processed_responses)

然后我重新加载模型,并用测试数据调用预测方法:

saved_model = open(path+"clustering_model.pkl", 'rb')
fitted_model = pickle.load(saved_model)
labels,cost = _predict_cluster(fitted_model, test_data_frame)

一切都可以在我的机器上进行。

当我尝试从主应用程序加载此模型以便将所有内容推送到开发人员时,问题就开始了。对于相同的测试数据,我会收到错误消息:

not enough values to unpack (expected 2 got 1)

此方法引发错误:

labels,cost = _predict_cluster(fitted_model, test_data_frame)

在预测中显示我打印了接收到的输入,这表明模型和测试数据都已正确接收:

    C1     C2    C3    C4   C5   C6
0   low   high   low  low   low  low

这是我加载并发送以进行预测的拟合模型:

KModes(cat_dissim=<function matching_dissim at 0x7f60c9c0cb70>, 
init='Random', max_iter=200, n_clusters=8, n_init=15, verbose=0)

到目前为止,我还无法弄清楚为什么会出现此错误。我如何能够将模型重新加载到我的计算机上,并使用测试数据调用预测,但是这又是开发人员主要应用程序的一部分?

谢谢。

0 个答案:

没有答案