如何在Python中结合深度学习模型和传统机器学习模型的分类结果

我有以下三个分类模型,其中我的数据标签为10

  • 使用一些时间序列数据的LSTM模型,输出节点为一个(即model.add(Dense(1, activation='sigmoid'))),所以我的输出类似于[0.1, 0.1, 0.6, 0.9, ...]
  • 使用特征集1的传统随机森林模型 – 我使用的是sklearn的predict_proba:所以我的输出类似于[[0.9, 0.1], [0.8, 0.2], ...]
  • 使用特征集2的传统随机森林模型 – 我使用的是sklearn的predict_proba:所以我的输出类似于[[0.8, 0.2], [0.9, 0.1], ...]

我想将这三个模型的预测结果结合起来,得到一个反映我的分类的概率列表。我在Stack Overflow上搜索过这个问题,但像bagging和stacking这样的建议对我来说不可行,因为我还使用了LSTM模型。

我想知道是否有其他方法可以用Python来结合这些预测概率。

如果需要,我很乐意提供更多细节。


回答:

你可以选择以下两种解决方案之一,但首先你需要使三个模型的输出表示一致,对于第二个和第三个模型,你可以使用pred_2 = [y[0] for y in pred_2]使其看起来像第一个模型。(y[0]或y[1]取决于你第一个模型中概率的含义)。

第一个解决方案是通过计算三个列表的平均值来进行多数投票:majority_voting = [v/3.0 for v in[sum(x) for x in zip(pred_1, pred_2, pred_3)]]

第二个解决方案稍微复杂一些,你可以使用另一个深度学习模型来选择三个模型中最好的结果。你需要准备data_x作为一个有三列的列表,每列对应一个模型的输出,data_y是你的原始数据的相同标签,这样做可以让模型学习如何使用这三个模型来预测输出,而不仅仅是多数投票。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注