我有一个训练有素的神经网络,我试图在其中使用EnsembleVoteClassifier
中的mlxtend.classifier
对预测进行平均。问题是我的神经网络没有共享相同的输入,(我随机执行特征约简和特征选择算法,并将结果存储在新的不同变量中,所以我有类似X_test_algo1
,X_test_algo2
和X_test_algo3
和Y_test
)。
我正在尝试平均权重,但是正如我所说,我没有相同的X,并且文档中也没有任何示例。如何对三个模型model1
,model2
和model3
eclf = EnsembleVoteClassifier(clfs=[model1, model2, model3], weights=[1,1,1], refit=False)
names = ['NN1', 'NN2', 'NN2', 'Ensemble']
eclf.fit(X_train_algo1, Ytrain) #????
如果不可能,没关系。我只对如何计算“硬投票”,“硬投票”和“加权投票”的公式感兴趣,或者是否有一个更灵活的花药库,或者这些公式的显式表达式也可能有用。
答案 0 :(得分:0)
您为什么需要一个库来做到这一点?
只需在所有神经网络中传递相同的示例,即可获得预测(对数,概率或标签)。
硬投票选择分类器最常预测的标签。
软投票,分类器预测的平均概率,然后选择具有最高概率的标签。
加权投票-可以对以上两个进行加权。只需为每个分类器分配权重,然后将它们的预测值乘以它们即可。权重通常标准化为(0, 1]
范围。
原则上,您也可以汇总logit并选择最高的标签。
哦,权重平均是另一种技术,需要您具有相同的模型,并且通常在相同的初始化过程中完成,但训练时间不同。您可以在this blog post中了解它。