É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 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.
Généralisation désigne la capacité du modèle à fonctionner efficacement sur de nouvelles données non vues, 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 de l’ensemble 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 en utilisant .fit(X_train, y_train) et évalué avec l’ensemble de test en utilisant .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 grand, 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
Can you explain why evaluating on the training set is misleading?
How does the random split affect model performance?
What does the `.score()` method actually measure?
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 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.
Généralisation désigne la capacité du modèle à fonctionner efficacement sur de nouvelles données non vues, 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 de l’ensemble 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 en utilisant .fit(X_train, y_train) et évalué avec l’ensemble de test en utilisant .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 grand, ces scores deviendraient plus stables.
Merci pour vos commentaires !