官术网_书友最值得收藏!

There's more...

Many classifiers can estimate class probabilities. In this case, the class labels are predicted by averaging the class probabilities. This is called soft voting and is recommended for an ensemble of well-tuned classifiers.

In the scikit-learn library, many classification algorithms have the predict_proba() method to predict the class probabilities. To perform the ensemble with soft voting, simply replace voting='hard' with voting='soft' in VotingClassifier().

The following code creates an ensemble using soft voting:

# create the sub models
estimators = []

dt_model = DecisionTreeClassifier(random_state=1)
estimators.append(('DecisionTree', dt_model))

svm_model = SVC(random_state=1, probability=True)
estimators.append(('SupportVector', svm_model))

logit_model = LogisticRegression(random_state=1)
estimators.append(('Logistic Regression', logit_model))

for each_estimator in (dt_model, svm_model, logit_model):
each_estimator.fit(X_train, Y_train)
Y_pred = each_estimator.predict(X_test)
print(each_estimator.__class__.__name__, accuracy_score(Y_test, Y_pred))

# Using VotingClassifier() to build ensemble model with Soft Voting
ensemble_model = VotingClassifier(estimators=estimators, voting='soft')
ensemble_model.fit(X_train,Y_train)
predicted_labels = ensemble_model.predict(X_test)
print("Classifier Accuracy using Soft Voting: ", accuracy_score(Y_test, predicted_labels))

We get to see the accuracy from individual learners and the ensemble learner using soft voting:

The SVC class can't estimate class probabilities by default, so we've set its probability hyper-parameter to  True in the preceding code. With probability=True, SVC will be able to estimate class probabilities.
主站蜘蛛池模板: 新邵县| 芜湖市| 泰宁县| 岳池县| 南开区| 肇源县| 宣武区| 九台市| 德安县| 百色市| 江油市| 韶山市| 民乐县| 娱乐| 隆尧县| 洛浦县| 同德县| 临城县| 连江县| 个旧市| 麦盖提县| 盈江县| 灌云县| 哈密市| 特克斯县| 崇明县| 泸定县| 博野县| 嘉禾县| 绵竹市| 枣强县| 阿拉善盟| 大田县| 玉环县| 内乡县| 安宁市| 和田市| 多伦县| 新巴尔虎左旗| 普兰县| 威宁|