Classification des fleurs iris à l'aide du Voting Classifier

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/tree("Decision Trees") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/neighbors("Nearest Neighbors") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/tree -.-> lab-49328{{"Classification des fleurs iris à l'aide du Voting Classifier"}} sklearn/neighbors -.-> lab-49328{{"Classification des fleurs iris à l'aide du Voting Classifier"}} sklearn/ensemble -.-> lab-49328{{"Classification des fleurs iris à l'aide du Voting Classifier"}} sklearn/svm -.-> lab-49328{{"Classification des fleurs iris à l'aide du Voting Classifier"}} sklearn/inspection -.-> lab-49328{{"Classification des fleurs iris à l'aide du Voting Classifier"}} ml/sklearn -.-> lab-49328{{"Classification des fleurs iris à l'aide du Voting Classifier"}} end

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.