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

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.
主站蜘蛛池模板: 连平县| 陆川县| 冕宁县| 五原县| 灌阳县| 成安县| 南昌市| 始兴县| 长沙市| 炉霍县| 米泉市| 山丹县| 鄂托克旗| 镇江市| 宁晋县| 稻城县| 泰宁县| 同德县| 色达县| 志丹县| 望奎县| 剑河县| 昌图县| 衡东县| 肥城市| 沐川县| 磐石市| 饶平县| 鹤峰县| 印江| 阜平县| 朝阳县| 门源| 都安| 定州市| 崇信县| 鹤山市| 即墨市| 西丰县| 佛学| 临泉县|