具有神经网络的EnsembleVoteClassifier

时间:2019-10-07 20:01:53

标签: python neural-network pytorch ensemble-learning voting-system

我有一个训练有素的神经网络,我试图在其中使用EnsembleVoteClassifier中的mlxtend.classifier对预测进行平均。问题是我的神经网络没有共享相同的输入,(我随机执行特征约简和特征选择算法,并将结果存储在新的不同变量中,所以我有类似X_test_algo1X_test_algo2X_test_algo3Y_test)。

我正在尝试平均权重,但是正如我所说,我没有相同的X,并且文档中也没有任何示例。如何对三个模型model1model2model3

的预测取平均值
eclf = EnsembleVoteClassifier(clfs=[model1, model2, model3], weights=[1,1,1], refit=False)
names = ['NN1', 'NN2', 'NN2', 'Ensemble']

eclf.fit(X_train_algo1, Ytrain) #????

如果不可能,没关系。我只对如何计算“硬投票”,“硬投票”和“加权投票”的公式感兴趣,或者是否有一个更灵活的花药库,或者这些公式的显式表达式也可能有用。

1 个答案:

答案 0 :(得分:0)

您为什么需要一个库来做到这一点?

只需在所有神经网络中传递相同的示例,即可获得预测(对数,概率或标签)。

  • 硬投票选择分类器最常预测的标签。

  • 软投票,分类器预测的平均概率,然后选择具有最高概率的标签。

  • 加权投票-可以对以上两个进行加权。只需为每个分类器分配权重,然后将它们的预测值乘以它们即可。权重通常标准化为(0, 1]范围。

原则上,您也可以汇总logit并选择最高的标签。

哦,权重平均是另一种技术,需要您具有相同的模型,并且通常在相同的初始化过程中完成,但训练时间不同。您可以在this blog post中了解它。

相关问题