python - 带有神经网络的 EnsembleVoteClassifier

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

我有一个经过训练的神经网络,我尝试使用 mlxtend.classifier 中的 EnsembleVoteClassifier 对其预测进行平均。问题是我的神经网络不共享相同的输入,(我随机执行特征缩减和特征选择算法并将结果存储在新的不同变量上,所以我有类似 X_test_algo1, X_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) #????

如果不可能,那也没关系。我只对如何计算硬投票、硬投票和加权投票的公式感兴趣,或者是否有更灵活的花药库或者公式的显式表达也可能有帮助。

最佳答案

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

只需将相同的示例传递给所有神经网络即可获得预测(逻辑或概率或标签)。

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

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

  • 加权投票 - 以上任意一项都可以加权。只需为每个分类器分配权重并将其预测乘以权重即可。权重通常标准化为 (0, 1] 范围。

原则上,您还可以对 logits 求和并选择最高的标签。

哦,权重平均是不同的技术,要求您拥有相同的模型,并且通常是在相同的初始化但在不同的训练时间步长上完成的。您可以在this blog post中阅读相关内容。 .

关于python - 带有神经网络的 EnsembleVoteClassifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276400/

相关文章:

python - rabbitmq什么时候使用tcp背压?

python - 如何按日期对值进行排序并按列删除重复项?

c++ - Caffe classifocation.cpp 始终返回 100% 概率

python - 充当线性缩放的 Tensorflow 权重

python - tensorflow/models.. 在 Windows 中的位置

Python多索引: Changing second level of index names

python - TensorFlow - `keys` 或 `default_value` 与表数据类型不匹配

python - 如何表示 PyTorch LSTM 3D 张量?

python - 并行化并加速张量加法循环

python - Huggingface错误: AttributeError: 'ByteLevelBPETokenizer' object has no attribute 'pad_token_id'