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

时间:2020-06-24 03:24:21

标签: python machine-learning scikit-learn deep-learning classification

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

  • 带有一些时间序列数据的lstm模型,该数据具有一个节点作为输出(即model.add(Dense(1, activation='sigmoid'))),因此我的输出类似于[0.1, 0.1, 0.6, 0.9, ...]
  • traditional random forest具有功能集1-我正在使用sklearn的predict_proba:所以我的输出类似于[[0.9, 0.1], [0.8, 0.2], ...]
  • traditional random forest具有功能集2-我正在使用sklearn的predict_proba:所以我的输出类似于[[0.8, 0.2], [0.9, 0.1], ...]

我想结合三个模型的预测,以获得一个反映我的分类的概率列表。我在SO中进行了搜索,但是由于我也在考虑使用lstm模型,因此像袋装和堆叠这样的建议对我来说是不可能的。

我想知道是否还有其他方法可以用来在python中组合这些预测概率。

如果需要,我很乐意提供更多详细信息。

1 个答案:

答案 0 :(得分:3)

您可以执行两个解决方案之一,但是首先需要使三个模型的输出表示相同,因此对于第二个和第三个模型 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相同的标签,这样做是让模型学习如何使用三种模型来预测结果,而不仅仅是多数投票。