Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Évaluation du Modèle | Modélisation
Introduction au ML Avec Scikit-Learn

bookÉ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.

123456789101112131415
import 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))
copy

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.

question mark

Pour obtenir une répartition entraînement-test de 67 %/33 %, nous prenons le premier tiers des lignes comme ensemble de test et le reste comme ensemble d'entraînement. Cette affirmation est-elle correcte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

bookÉ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.

123456789101112131415
import 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))
copy

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.

question mark

Pour obtenir une répartition entraînement-test de 67 %/33 %, nous prenons le premier tiers des lignes comme ensemble de test et le reste comme ensemble d'entraînement. Cette affirmation est-elle correcte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3
some-alt