加载的LGBM模型如何在不同的机器上产生不同的预测?

2024-06-26 02:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前用pickle保存过LGBM模型。程序从给定的网页中获取内容,然后对其进行分类。你知道吗

加载模型在我的本地计算机(台式机和笔记本电脑)中运行良好。但当它在EC2实例上运行时,它给出了无意义的预测。什么问题会导致这种情况?你知道吗

  • 三台机器(台式机、笔记本电脑和EC2实例)的型号完全相同
  • 模型的输入数据(在预处理步骤之后)是相同的
  • 代码相同(由Git克隆)
  • 这些预测在本地机器上是有意义的
  • numpyscikit-learn和其他包版本在所有三台机器中都是相同的

我在模型中加载:

self.mapper = pickle.load(open(model_path + "mapper.pkl", "rb"))
self.model = pickle.load(open(model_path + "model.pkl", "rb"))

如果你想知道(很抱歉代码太乱了,这部分不是我写的),那么你可以做一些预测:

data = self.pipeline.transform([{"url_name": url}])
df = pd.DataFrame({"text": [data]})

processed = self.mapper.transform(df)
processed = [a[0] for a in processed]

ws_results = OrderedDict()
for p1, p2 in sorted(zip(self.classes, self.model.predict_proba(processed).tolist()[0]), reverse=True, key=lambda x: x[1])[:3]:
            ws_results[p1] = round(p2, 3)

Tags: 实例代码模型self机器modelloadopen