Évaluation du Modèle
Lors de la création 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 aura 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.
Généralisation désigne la capacité d’un modèle à être performant sur de nouvelles données, non vues auparavant, au-delà des données sur lesquelles il a été entraîné. 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 l'ensemble 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 de l'ensemble 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 % à l'ensemble 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 l'ensemble 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 entraîne des scores variables. Avec un ensemble de données plus important, 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 création 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 aura 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.
Généralisation désigne la capacité d’un modèle à être performant sur de nouvelles données, non vues auparavant, au-delà des données sur lesquelles il a été entraîné. 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 l'ensemble 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 de l'ensemble 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 % à l'ensemble 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 l'ensemble 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 entraîne des scores variables. Avec un ensemble de données plus important, ces scores deviendraient plus stables.
Merci pour vos commentaires !