我有一个经过训练的神经网络,我尝试使用 mlxtend.classifier
中的 EnsembleVoteClassifier
对其预测进行平均。问题是我的神经网络不共享相同的输入,(我随机执行特征缩减和特征选择算法并将结果存储在新的不同变量上,所以我有类似 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, 1]
范围。
原则上,您还可以对 logits 求和并选择最高的标签。
哦,权重平均是不同的技术,要求您拥有相同的模型,并且通常是在相同的初始化但在不同的训练时间步长上完成的。您可以在this blog post中阅读相关内容。 .
关于python - 带有神经网络的 EnsembleVoteClassifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276400/