Clasificación de flores de iris utilizando el clasificador de votación

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, usaremos el VotingClassifier de Scikit-Learn para predecir la clase de las flores de iris basado en dos características. Compararemos las predicciones de los clasificadores DecisionTreeClassifier, KNeighborsClassifier y SVC individualmente, y luego usaremos VotingClassifier para combinar sus predicciones y ver si obtenemos mejores resultados.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar algunos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) 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{{"Clasificación de flores de iris utilizando el clasificador de votación"}} sklearn/neighbors -.-> lab-49328{{"Clasificación de flores de iris utilizando el clasificador de votación"}} sklearn/ensemble -.-> lab-49328{{"Clasificación de flores de iris utilizando el clasificador de votación"}} sklearn/svm -.-> lab-49328{{"Clasificación de flores de iris utilizando el clasificador de votación"}} sklearn/inspection -.-> lab-49328{{"Clasificación de flores de iris utilizando el clasificador de votación"}} ml/sklearn -.-> lab-49328{{"Clasificación de flores de iris utilizando el clasificador de votación"}} end

Cargar los datos

Cargaremos el conjunto de datos de iris usando el módulo datasets de Scikit-Learn. Solo usaremos dos características: la longitud del sépalo y la longitud del pétalo.

from sklearn import datasets

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

Entrenar los clasificadores

Inicializaremos tres clasificadores: DecisionTreeClassifier, KNeighborsClassifier y SVC. Luego, inicializaremos un VotingClassifier con estos tres clasificadores y lo usaremos para predecir la clase de las flores de 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)

Trazar los límites de decisión

Trazaremos los límites de decisión para cada clasificador y el 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()

Interpretar los resultados

Podemos ver que los límites de decisión del DecisionTreeClassifier y del KNeighborsClassifier son relativamente simples, mientras que el límite de decisión del SVC es más complejo. El límite de decisión del VotingClassifier es similar al del SVC, pero con menos complejidad en algunas áreas.

Resumen

En este laboratorio, usamos el VotingClassifier de Scikit-Learn para predecir la clase de las flores de iris basado en dos características. Entrenamos tres clasificadores: DecisionTreeClassifier, KNeighborsClassifier y SVC. Luego usamos VotingClassifier para combinar sus predicciones y tracamos los límites de decisión. Vimos que el límite de decisión del VotingClassifier era similar al del SVC, pero con menos complejidad en algunas áreas.