Évaluation du Modèle
Lors de la création d’un modèle de prédiction, il est essentiel de comprendre la performance du modèle avant de réaliser des prédictions réelles.
L’évaluation d’un modèle consiste à mesurer sa performance lors de la réalisation de prédictions. C’est pourquoi la méthode .score()
est importante.
Cependant, évaluer le modèle à l’aide des données d’entraînement peut donner des résultats peu fiables car un modèle a tendance à mieux fonctionner sur les données sur lesquelles il a été entraîné que sur de nouvelles données inconnues. Il est donc crucial d’évaluer le modèle sur des données qu’il n’a jamais vues auparavant afin de réellement comprendre sa performance.
En termes plus formels, nous recherchons un modèle qui généralise bien.
Cela peut être réalisé en divisant aléatoirement les données en un ensemble d’entraînement et un ensemble de test.
Nous pouvons maintenant entraîner le modèle sur l’ensemble d’entraînement et évaluer sa performance sur l’ensemble de test.
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Pour diviser aléatoirement les données, nous pouvons utiliser la fonction train_test_split()
du module sklearn.model_selection
.
En général, pour un ensemble de test, on utilise 25-40 % des données lorsque l'ensemble de données est petit, 10-30 % pour un ensemble de taille moyenne, et moins de 10 % pour les grands ensembles de données.
Dans notre exemple, avec seulement 342 instances — classé comme un petit ensemble de données — nous allons allouer 33 % des données à l'ensemble de test.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Nous appelons l'ensemble d'entraînement X_train
et y_train
, et l'ensemble de test X_test
et y_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))
Remarquez que nous utilisons maintenant l'ensemble d'entraînement dans .fit(X_train, y_train)
et l'ensemble de test dans .score(X_test, y_test)
.
Puisque train_test_split()
divise l'ensemble de données aléatoirement, chaque exécution du code génère des ensembles d'entraînement et de test différents. Vous pouvez l'exécuter plusieurs fois et constater que les scores varient. Ces scores deviendraient plus stables si la taille de l'ensemble de données augmentait.
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 de prédiction, il est essentiel de comprendre la performance du modèle avant de réaliser des prédictions réelles.
L’évaluation d’un modèle consiste à mesurer sa performance lors de la réalisation de prédictions. C’est pourquoi la méthode .score()
est importante.
Cependant, évaluer le modèle à l’aide des données d’entraînement peut donner des résultats peu fiables car un modèle a tendance à mieux fonctionner sur les données sur lesquelles il a été entraîné que sur de nouvelles données inconnues. Il est donc crucial d’évaluer le modèle sur des données qu’il n’a jamais vues auparavant afin de réellement comprendre sa performance.
En termes plus formels, nous recherchons un modèle qui généralise bien.
Cela peut être réalisé en divisant aléatoirement les données en un ensemble d’entraînement et un ensemble de test.
Nous pouvons maintenant entraîner le modèle sur l’ensemble d’entraînement et évaluer sa performance sur l’ensemble de test.
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
Pour diviser aléatoirement les données, nous pouvons utiliser la fonction train_test_split()
du module sklearn.model_selection
.
En général, pour un ensemble de test, on utilise 25-40 % des données lorsque l'ensemble de données est petit, 10-30 % pour un ensemble de taille moyenne, et moins de 10 % pour les grands ensembles de données.
Dans notre exemple, avec seulement 342 instances — classé comme un petit ensemble de données — nous allons allouer 33 % des données à l'ensemble de test.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Nous appelons l'ensemble d'entraînement X_train
et y_train
, et l'ensemble de test X_test
et y_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))
Remarquez que nous utilisons maintenant l'ensemble d'entraînement dans .fit(X_train, y_train)
et l'ensemble de test dans .score(X_test, y_test)
.
Puisque train_test_split()
divise l'ensemble de données aléatoirement, chaque exécution du code génère des ensembles d'entraînement et de test différents. Vous pouvez l'exécuter plusieurs fois et constater que les scores varient. Ces scores deviendraient plus stables si la taille de l'ensemble de données augmentait.
Merci pour vos commentaires !