python 如何结合深度学习模型和传统机器学习模型的分类结果
How to combine the classification results of deep learning models and traditional machine learning models in python
我有如下三个分类模型,其中我的数据标签是 1
或 0
。
- 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 中搜索了这个,但是像 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
as 列表,该列表具有三列,每个模型输出一列,并且 data_y
原始数据具有相同的标签,这样您就可以让模型学习如何使用三个模型来预测输出,而不仅仅是多数投票。
我有如下三个分类模型,其中我的数据标签是 1
或 0
。
- 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 中搜索了这个,但是像 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
as 列表,该列表具有三列,每个模型输出一列,并且 data_y
原始数据具有相同的标签,这样您就可以让模型学习如何使用三个模型来预测输出,而不仅仅是多数投票。