绘制投票分类器的决策边界#

绘制 Iris 数据集两个特征的VotingClassifier 的决策边界。

绘制三种不同分类器预测的玩具数据集中第一个样本的类概率,并由VotingClassifier取平均值。

首先,初始化三个示例分类器(DecisionTreeClassifierKNeighborsClassifierSVC),并使用权重 [2, 1, 2] 初始化软投票 VotingClassifier,这意味着 DecisionTreeClassifierSVC 的预测概率的权重是 KNeighborsClassifier 分类器的两倍,在计算平均概率时。

Decision Tree (depth=4), KNN (k=7), Kernel SVM, Soft Voting
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

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

# Loading some example data
iris = datasets.load_iris()
X = iris.data[:, [0, 2]]
y = iris.target

# Training classifiers
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)

# Plotting decision regions
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()

脚本总运行时间:(0 分钟 0.696 秒)

相关示例

绘制投票分类器计算的类概率

绘制投票分类器计算的类概率

绘制在鸢尾花数据集上训练的决策树的决策面

绘制在鸢尾花数据集上训练的决策树的决策面

在 iris 数据集上绘制多类 SGD

在 iris 数据集上绘制多类 SGD

在 iris 数据集上绘制不同的 SVM 分类器

在 iris 数据集上绘制不同的 SVM 分类器

由 Sphinx-Gallery 生成的图库