首页 > 解决方案 > 保存和加载 ML 模型

问题描述

我有一个机器学习模型,我在拟合后将其保存为泡菜:

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

通过导入 predict 方法,我可以将其加载回来并从不同的 python 文件中对其进行测试:

我创建了一个测试输入:

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

test_data_frame = pd.DataFrame(data = processed_responses)

然后我加载回模型并用我的测试数据调用 predict 方法:

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)

Insdie the predict 我打印了它收到的输入,它告诉我模型和测试数据都被正确接收:

    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)

到目前为止,我还无法弄清楚为什么会出现此错误。我怎么可能将模型加载回我的机器上并使用测试数据调用预测,但作为开发主应用程序的一部分?

谢谢你。

标签: pythonmachine-learningpickleproduction-environmentdev-to-production

解决方案


推荐阅读