Note
Go to the end to download the full example code. or to run this example in your browser via Binder
绘制VotingClassifier的决策边界#
绘制Iris数据集的两个特征的 VotingClassifier
的决策边界。
绘制玩具数据集中第一个样本的类别概率,这些概率由三个不同的分类器预测并由 VotingClassifier
进行平均。
首先,初始化三个示例性分类器( DecisionTreeClassifier
、 KNeighborsClassifier
和 SVC
),并使用权重 [2, 1, 2]
初始化一个软投票 VotingClassifier
,这意味着在计算平均概率时, DecisionTreeClassifier
和 SVC
的预测概率各自的权重是 KNeighborsClassifier
分类器权重的两倍。
from itertools import product
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.ensemble import VotingClassifier
from sklearn.inspection import DecisionBoundaryDisplay
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
# 加载一些示例数据
iris = datasets.load_iris()
X = iris.data[:, [0, 2]]
y = iris.target
# 训练分类器
clf1 = DecisionTreeClassifier(max_depth=4)
clf2 = KNeighborsClassifier(n_neighbors=7)
clf3 = SVC(gamma=0.1, kernel="rbf", probability=True)
eclf = VotingClassifier(
estimators=[("dt", clf1), ("knn", clf2), ("svc", clf3)],
voting="soft",
weights=[2, 1, 2],
)
clf1.fit(X, y)
clf2.fit(X, y)
clf3.fit(X, y)
eclf.fit(X, y)
# 绘制决策区域
f, axarr = plt.subplots(2, 2, sharex="col", sharey="row", figsize=(10, 8))
for idx, clf, tt in zip(
product([0, 1], [0, 1]),
[clf1, clf2, clf3, eclf],
["Decision Tree (depth=4)", "KNN (k=7)", "Kernel SVM", "Soft Voting"],
):
DecisionBoundaryDisplay.from_estimator(
clf, X, alpha=0.4, ax=axarr[idx[0], idx[1]], response_method="predict"
)
axarr[idx[0], idx[1]].scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor="k")
axarr[idx[0], idx[1]].set_title(tt)
plt.show()
Total running time of the script: (0 minutes 0.336 seconds)
Related examples
绘制在鸢尾花数据集上训练的决策树的决策边界
在鸢尾花数据集上绘制多类SGD
在鸢尾花数据集上绘制不同的SVM分类器
绘制鸢尾花数据集上树集成的决策边界