繪製 VotingClassifier 的決策邊界#

繪製 Iris 資料集兩個特徵的 VotingClassifier 的決策邊界。

繪製由三個不同分類器預測並由 VotingClassifier 平均的玩具資料集中第一個樣本的類別機率。

首先,初始化三個範例分類器(DecisionTreeClassifierKNeighborsClassifierSVC),並用於初始化具有權重 [2, 1, 2] 的軟投票 VotingClassifier,這表示 DecisionTreeClassifierSVC 的預測機率在計算平均機率時各自計算 2 倍於 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 秒)

相關範例

繪製 VotingClassifier 計算的類別機率

繪製 VotingClassifier 計算的類別機率

繪製在 iris 資料集上訓練的決策樹的決策面

繪製在 iris 資料集上訓練的決策樹的決策面

在 iris 資料集上繪製多類 SGD

在 iris 資料集上繪製多類 SGD

繪製 Iris 資料集中不同的 SVM 分類器

繪製 Iris 資料集中不同的 SVM 分類器

由 Sphinx-Gallery 產生的圖庫