Sklearn和Mlxtend中的集成学习
The-basic-ensemble-classifiers-of-Sklearn-and-Mlxtend
Bagging- Sklearn
多个随机的单类estimator Bagging meta-estimator
sklearn.ensemble.BaggingClassifier
使用单个base estimator,抽样不同的样本和特征,进行bagging
1 | from sklearn.ensemble import BaggingClassifier |
1 | from sklearn.svm import SVC |
多个多种estimator投票 Voting Classifier
sklearn.ensemble.VotingClassifier
使用多个estimators进行投票,投票方式有hard和soft,
If ‘hard’, uses predicted class labels for majority rule voting. Else if ‘soft’, predicts the class label based on the argmax of the sums of the predicted probabilities, which is recommended for an ensemble of well-calibrated classifiers.
1 | import numpy as np |
Voting-Mlxtend
mlxtend中也有类似的方法,EnsembleVoteClassifier
1 | from mlxtend.classifier import EnsembleVoteClassifier |
Stacking-mlxtend
StackingClassifier 使用API及参数解析:
1 | StackingClassifier(classifiers, meta_classifier, use_probas=False, average_probas=False, verbose=0, use_features_in_secondary=False) |
I. 最基本的使用方法,即使用前面分类器产生的特征输出作为最后总的meta-classifier的输入数据
1 | from sklearn import datasets |
II. 另一种使用第一层基本分类器产生的类别概率值作为meta-classfier的输入,这种情况下需要将StackingClassifier的参数设置为 use_probas=True。如果将参数设置为 average_probas=True,那么这些基分类器对每一个类别产生的概率值会被平均,否则会拼接。
1 | 例如有两个基分类器产生的概率输出为: |
1 | from sklearn import datasets |
III. 另外一种方法是对训练基中的特征维度进行操作的,这次不是给每一个基分类器全部的特征,而是给不同的基分类器分不同的特征,即比如基分类器1训练前半部分特征,基分类器2训练后半部分特征(可以通过sklearn 的pipelines 实现)。最终通过StackingClassifier组合起来。
1 | from sklearn.datasets import load_iris |