Introducción
El conjunto de datos iris es un conjunto de datos clásico utilizado para problemas de clasificación. En este laboratorio, aprenderemos cómo trazar diferentes clasificadores SVM en el conjunto de datos iris utilizando scikit-learn de Python. Compararemos diferentes clasificadores SVM lineales en una proyección 2D del conjunto de datos iris.
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 Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de 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.
Importar las bibliotecas necesarias y cargar el conjunto de datos
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay
## import some data to play with
iris = datasets.load_iris()
## Take the first two features. We could avoid this by using a two-dim dataset
X = iris.data[:, :2]
y = iris.target
Crear clasificadores SVM y ajustar los datos
C = 1.0 ## Parámetro de regularización SVM
models = (
svm.SVC(kernel="linear", C=C),
svm.LinearSVC(C=C, max_iter=10000, dual="auto"),
svm.SVC(kernel="rbf", gamma=0.7, C=C),
svm.SVC(kernel="poly", degree=3, gamma="auto", C=C),
)
models = (clf.fit(X, y) for clf in models)
Trazar la superficie de decisión para los clasificadores
## Configurar una cuadrícula 2x2 para la representación gráfica.
fig, sub = plt.subplots(2, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)
X0, X1 = X[:, 0], X[:, 1]
## crear un DecisionBoundaryDisplay para cada clasificador
for clf, title, ax in zip(models, titles, sub.flatten()):
disp = DecisionBoundaryDisplay.from_estimator(
clf,
X,
response_method="predict",
cmap=plt.cm.coolwarm,
alpha=0.8,
ax=ax,
xlabel=iris.feature_names[0],
ylabel=iris.feature_names[1],
)
## trazar los puntos de datos
ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
ax.set_xticks(())
ax.set_yticks(())
ax.set_title(title)
plt.show()
Interpretar los resultados
El código anterior generará una representación gráfica con cuatro subtramas. Cada subtrama muestra la superficie de decisión para un clasificador SVM diferente. El título de cada subtrama indica el tipo de kernel SVM utilizado en ese clasificador. Los puntos de datos están codificados por color según su clase objetivo.
Resumen
En este laboratorio, aprendimos cómo representar gráficamente diferentes clasificadores SVM en el conjunto de datos iris utilizando scikit-learn de Python. Comparamos diferentes clasificadores SVM lineales en una proyección bidimensional del conjunto de datos iris e interpretamos los resultados. Los clasificadores SVM son herramientas poderosas para problemas de clasificación y se pueden utilizar para una amplia variedad de conjuntos de datos.