use*_*844 24 python classification machine-learning scikit-learn
我有一个逻辑回归和一个随机森林,我想通过取平均值将它们(整体)组合起来进行最终的分类概率计算.
在sci-kit学习中是否有内置的方法可以做到这一点?在某些方面我可以使用两者的集合作为分类器本身?或者我需要滚动自己的分类器?
use*_*844 34
注意:scikit-learn Voting Classifier现在可能是最好的方法
老答案:
对于它的价值我最终做到如下:
class EnsembleClassifier(BaseEstimator, ClassifierMixin):
def __init__(self, classifiers=None):
self.classifiers = classifiers
def fit(self, X, y):
for classifier in self.classifiers:
classifier.fit(X, y)
def predict_proba(self, X):
self.predictions_ = list()
for classifier in self.classifiers:
self.predictions_.append(classifier.predict_proba(X))
return np.mean(self.predictions_, axis=0)
Run Code Online (Sandbox Code Playgroud)
考虑到同样的问题,我使用了多数投票法。任意组合概率/分数是非常有问题的,因为不同分类器的性能可能不同(例如,具有 2 个不同内核的 SVM,+ 随机森林 + 在不同训练集上训练的另一个分类器)。
“权衡”不同分类器的一种可能方法可能是使用它们的 Jaccard 分数作为“权重”。(但请注意,据我了解,不同的分数并不是“全部相等”,我知道我的集合中的梯度增强分类器给出的所有分数为 0.97, 0.98, 1.00 或 0.41/0 。即它是非常自信..)
sklearn.ensemble.VotingClassifier 怎么样?
根据描述:
投票分类器实现背后的想法是结合概念上不同的机器学习分类器,并使用多数投票或平均预测概率(软投票)来预测类别标签。这样的分类器对于一组性能同样良好的模型很有用,以平衡它们各自的弱点。
归档时间: |
|
查看次数: |
16221 次 |
最近记录: |