Introduction
Le jeu de données iris est un jeu de données classique utilisé pour les problèmes de classification. Dans ce laboratoire, nous allons apprendre à tracer différents classifieurs SVM dans le jeu de données iris à l'aide de scikit-learn en Python. Nous comparerons différents classifieurs SVM linéaires sur une projection 2D du jeu de données iris.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.
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 des commentaires après la session, et nous réglerons rapidement le problème pour vous.
Importez les bibliothèques nécessaires et chargez le jeu de données
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay
## importez quelques données pour jouer
iris = datasets.load_iris()
## Prenez les deux premières caractéristiques. Nous pourrions éviter cela en utilisant un jeu de données à deux dimensions
X = iris.data[:, :2]
y = iris.target
Créez des classifieurs SVM et ajustez les données
C = 1.0 ## Paramètre de régularisation SVM
models = (
svm.SVC(kernel="linéaire", 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)
Tracez la surface de décision pour les classifieurs
## Configurez une grille 2x2 pour le tracé.
fig, sub = plt.subplots(2, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)
X0, X1 = X[:, 0], X[:, 1]
## créez un DecisionBoundaryDisplay pour chaque classifieur
for clf, titre, ax in zip(models, titres, 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],
)
## tracez les points de données
ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
ax.set_xticks(())
ax.set_yticks(())
ax.set_title(titre)
plt.show()
Interprétez les résultats
Le code ci-dessus générera un graphique avec quatre sous-graphiques. Chaque sous-graphique montre la surface de décision pour un classifieur SVM différent. Le titre de chaque sous-graphique indique le type de noyau SVM utilisé dans ce classifieur. Les points de données sont colorés en fonction de leur classe cible.
Sommaire
Dans ce laboratoire, nous avons appris à tracer différents classifieurs SVM dans le jeu de données iris à l'aide de scikit-learn en Python. Nous avons comparé différents classifieurs SVM linéaires sur une projection 2D du jeu de données iris et interprété les résultats. Les classifieurs SVM sont des outils puissants pour les problèmes de classification et peuvent être utilisés pour une large gamme de jeux de données.