Mesurer la performance du modèle

Apprentissage supervisé avec scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Mesurer la performance du modèle

  • En matière de classification, l’exactitude est une métrique couramment utilisée

  • Exactitude :

prédictions correctes divisées par le nombre total d’observations

Apprentissage supervisé avec scikit-learn

Mesurer la performance du modèle

  • Comment mesurer l’exactitude ?

  • Possibilité de mesure sur les données utilisées pour ajuster le classificateur

  • N’indique NOT la capacité de généralisation

Apprentissage supervisé avec scikit-learn

Calcul de l’exactitude

les données sont divisées en un ensemble d’apprentissage et un ensemble de test

Apprentissage supervisé avec scikit-learn

Calcul de l’exactitude

ajustement d’un classificateur sur l’ensemble d’apprentissage

Apprentissage supervisé avec scikit-learn

Calcul de l’exactitude

calculer l’exactitude en utilisant l’ensemble de test

Apprentissage supervisé avec scikit-learn

Séparation apprentissage/test

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=21, stratify=y)
knn = KNeighborsClassifier(n_neighbors=6)
knn.fit(X_train, y_train)
print(knn.score(X_test, y_test))
0.8800599700149925
Apprentissage supervisé avec scikit-learn

Complexité du modèle

  • k plus grand = modèle moins complexe = risque de sous-ajustement

  • k plus petit = modèle plus complexe = risque de surajustement

diagrammes en nuages de points montrant une frontière de décision KNN pour k=1, k=9, et k=18

Apprentissage supervisé avec scikit-learn

Complexité du modèle et sous/surajustement

train_accuracies = {}
test_accuracies = {}
neighbors = np.arange(1, 26)

for neighbor in neighbors:
knn = KNeighborsClassifier(n_neighbors=neighbor)
knn.fit(X_train, y_train)
train_accuracies[neighbor] = knn.score(X_train, y_train) test_accuracies[neighbor] = knn.score(X_test, y_test)
Apprentissage supervisé avec scikit-learn

Tracer nos résultats

plt.figure(figsize=(8, 6))
plt.title("KNN: Varying Number of Neighbors")
plt.plot(neighbors, train_accuracies.values(), label="Training Accuracy")
plt.plot(neighbors, test_accuracies.values(), label="Testing Accuracy")
plt.legend()
plt.xlabel("Number of Neighbors")
plt.ylabel("Accuracy")
plt.show()
Apprentissage supervisé avec scikit-learn

Courbe de complexité du modèle

graphique linéaire de la précision en fonction du nombre de voisins, où la précision des ensembles d’apprentissage et de test diminue à mesure que k augmente

Apprentissage supervisé avec scikit-learn

Courbe de complexité du modèle

flèche dans le graphique linéaire indiquant 13 voisins pour la meilleure exactitude de l’ensemble de test

Apprentissage supervisé avec scikit-learn

Passons à la pratique !

Apprentissage supervisé avec scikit-learn

Preparing Video For Download...