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

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.
主站蜘蛛池模板: 江津市| 濮阳县| 汝阳县| 朝阳县| 南汇区| 天台县| 淅川县| 秭归县| 兴和县| 镇巴县| 武汉市| 磴口县| 镇远县| 钟山县| 逊克县| 山阳县| 亳州市| 资阳市| 清远市| 衡阳市| 文安县| 千阳县| 彭阳县| 上饶县| 改则县| 沧源| 高淳县| 茂名市| 榕江县| 旺苍县| 迭部县| 秀山| 行唐县| 渭南市| 象州县| 龙岩市| 通海县| 汉中市| 德阳市| 阿克陶县| 格尔木市|