Évaluation du Modèle
Lors de la construction d’un modèle prédictif, il est essentiel de déterminer son niveau de performance avant de l’utiliser pour des prédictions réelles.
L’évaluation du modèle mesure la précision des prédictions du modèle. La méthode .score()
fournit cette évaluation.
Évaluer la performance sur l’ensemble d’entraînement est trompeur, car le modèle a tendance à mieux fonctionner sur des données déjà vues. Pour obtenir une mesure réaliste, l’évaluation doit être réalisée sur des données non vues.
En termes formels, l’objectif est de créer un modèle qui généralise bien.
La généralisation correspond à la capacité du modèle à être performant sur de nouvelles données, non vues auparavant, au-delà de celles utilisées pour l’entraînement. Elle mesure dans quelle mesure les prédictions du modèle peuvent être appliquées à des situations réelles en dehors du jeu de données d’entraînement.
Cela peut être réalisé en divisant aléatoirement le jeu de données en deux parties : un ensemble d’entraînement pour ajuster le modèle et un ensemble de test pour l’évaluation.
Entraîner le modèle à l'aide de l'ensemble d'entraînement puis l'évaluer sur le jeu de test :
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Pour créer une séparation aléatoire des données, utiliser la fonction train_test_split()
du module sklearn.model_selection
.
En général, la taille du jeu de test dépend du jeu de données : 25–40 % pour les petits jeux de données, 10–30 % pour les jeux moyens, et moins de 10 % pour les grands jeux de données.
Dans cet exemple, avec seulement 342 instances (un petit jeu de données), allouer 33 % au jeu de test :
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Ici, X_train
et y_train
représentent l'ensemble d'entraînement, tandis que X_test
et y_test
représentent le jeu de test.
123456789101112131415import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
Le modèle est maintenant entraîné avec l’ensemble d’entraînement à l’aide de .fit(X_train, y_train)
et évalué avec l’ensemble de test à l’aide de .score(X_test, y_test)
.
Comme train_test_split()
divise les données aléatoirement, les ensembles d’entraînement et de test diffèrent à chaque exécution, ce qui conduit à des scores variables. Avec un ensemble de données plus volumineux, ces scores deviendraient plus stables.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.13
Évaluation du Modèle
Glissez pour afficher le menu
Lors de la construction d’un modèle prédictif, il est essentiel de déterminer son niveau de performance avant de l’utiliser pour des prédictions réelles.
L’évaluation du modèle mesure la précision des prédictions du modèle. La méthode .score()
fournit cette évaluation.
Évaluer la performance sur l’ensemble d’entraînement est trompeur, car le modèle a tendance à mieux fonctionner sur des données déjà vues. Pour obtenir une mesure réaliste, l’évaluation doit être réalisée sur des données non vues.
En termes formels, l’objectif est de créer un modèle qui généralise bien.
La généralisation correspond à la capacité du modèle à être performant sur de nouvelles données, non vues auparavant, au-delà de celles utilisées pour l’entraînement. Elle mesure dans quelle mesure les prédictions du modèle peuvent être appliquées à des situations réelles en dehors du jeu de données d’entraînement.
Cela peut être réalisé en divisant aléatoirement le jeu de données en deux parties : un ensemble d’entraînement pour ajuster le modèle et un ensemble de test pour l’évaluation.
Entraîner le modèle à l'aide de l'ensemble d'entraînement puis l'évaluer sur le jeu de test :
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Pour créer une séparation aléatoire des données, utiliser la fonction train_test_split()
du module sklearn.model_selection
.
En général, la taille du jeu de test dépend du jeu de données : 25–40 % pour les petits jeux de données, 10–30 % pour les jeux moyens, et moins de 10 % pour les grands jeux de données.
Dans cet exemple, avec seulement 342 instances (un petit jeu de données), allouer 33 % au jeu de test :
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Ici, X_train
et y_train
représentent l'ensemble d'entraînement, tandis que X_test
et y_test
représentent le jeu de test.
123456789101112131415import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
Le modèle est maintenant entraîné avec l’ensemble d’entraînement à l’aide de .fit(X_train, y_train)
et évalué avec l’ensemble de test à l’aide de .score(X_test, y_test)
.
Comme train_test_split()
divise les données aléatoirement, les ensembles d’entraînement et de test diffèrent à chaque exécution, ce qui conduit à des scores variables. Avec un ensemble de données plus volumineux, ces scores deviendraient plus stables.
Merci pour vos commentaires !