Introduction
Dans ce laboratoire, nous utiliserons le VotingClassifier de Scikit-Learn pour prédire la classe des fleurs iris en fonction de deux caractéristiques. Nous comparerons les prédictions des classifieurs DecisionTreeClassifier, KNeighborsClassifier et SVC individuellement, puis utiliserons le VotingClassifier pour combiner leurs prédictions et voir si nous obtenons de meilleurs résultats.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour passer à l'onglet Notebook pour accéder à Jupyter Notebook pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.
Charger les données
Nous allons charger l'ensemble de données iris à l'aide du module datasets de Scikit-Learn. Nous n'utiliserons que deux caractéristiques : la longueur du sépale et la longueur du pétale.
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data[:, [0, 2]]
y = iris.target
Entraîner les classifieurs
Nous allons initialiser trois classifieurs : DecisionTreeClassifier, KNeighborsClassifier et SVC. Ensuite, nous allons initialiser un VotingClassifier avec ces trois classifieurs et l'utiliser pour prédire la classe des fleurs iris.
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.ensemble import VotingClassifier
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)
Tracer les limites de décision
Nous allons tracer les limites de décision pour chaque classifieur et le VotingClassifier.
import matplotlib.pyplot as plt
from itertools import product
from sklearn.inspection import DecisionBoundaryDisplay
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()
Interpréter les résultats
On peut voir que les limites de décision du DecisionTreeClassifier et du KNeighborsClassifier sont relativement simples, tandis que la limite de décision du SVC est plus complexe. La limite de décision du VotingClassifier est similaire à celle du SVC, mais avec moins de complexité dans certaines zones.
Sommaire
Dans ce laboratoire, nous avons utilisé le VotingClassifier de Scikit-Learn pour prédire la classe des fleurs iris en se basant sur deux caractéristiques. Nous avons entraîné trois classifieurs : DecisionTreeClassifier, KNeighborsClassifier et SVC. Nous avons ensuite utilisé VotingClassifier pour combiner leurs prédictions et tracé les limites de décision. Nous avons vu que la limite de décision du VotingClassifier était similaire à celle du SVC, mais avec moins de complexité dans certaines zones.