【发布时间】:2019-06-29 08:18:55
【问题描述】:
我正在使用高度不平衡的数据构建分类器。我在测试中感兴趣的策略是使用 3 个不同的重采样数据集 集成模型。换句话说,每个数据集将有所有个来自稀有类的样本,但只有个丰富类的样本 (technique #4 mentioned in this article)。
我想在每个重新采样的数据集上拟合 3 个不同的 VotingClassifiers,然后使用 另一个 VotingClassifier(或类似的)组合各个模型的结果。我知道构建一个单一的投票分类器是这样的:
# First Model
rnd_clf_1 = RandomForestClassifier()
xgb_clf_1 = XGBClassifier()
voting_clf_1 = VotingClassifier(
estimators = [
('rf', rnd_clf_1),
('xgb', xgb_clf_1),
],
voting='soft'
)
# And I can fit it with the first dataset this way:
voting_clf_1.fit(X_train_1, y_train_1)
但是,如果它们适合不同的数据集,如何堆叠它们三个?例如,如果我有三个拟合模型(参见下面的代码),我可以构建一个函数,在每个模型上调用 .predict_proba() 方法,然后“手动”平均各个概率。
但是...有更好的方法吗?
# Fitting the individual models... but how to combine the predictions?
voting_clf_1.fit(X_train_1, y_train_1)
voting_clf_2.fit(X_train_2, y_train_2)
voting_clf_3.fit(X_train_3, y_train_3)
谢谢!
【问题讨论】:
-
如果这是一个二分类问题,那么采用一种预测模式就可以了。如果类别更多,我们将进行概率最高的预测,但我只是在想它们的概率是否有可比性吗?
-
嘿@AdityaKansal,感谢您的评论。实际上,我正在寻找的是一种使用 sklearn 本身结合三个投票分类器的方法。我可以制作自己的功能来执行您的建议,但是在 sklearn 中是否已经有一种方法可以做到这一点,而无需重新发明轮子?我遇到的困难是模型配备了不同的数据集,所以我不确定正常的管道能否完成工作......
标签: machine-learning scikit-learn ensemble-learning