Lab : Évaluation des modèles ML & utilisation de TF-IDF
Objectif :
Appliquer les métriques suivantes sur un jeu de données textuel (classification
binaire) :
Accuracy
Precision, Recall, F1 Score
Matrice de confusion
Courbe ROC & AUC
TF-IDF
Comprendre également quand utiliser chacune de ces métriques.
Contexte du Lab
Vous allez travailler sur un dataset de critiques de films (IMDB Dataset ) avec deux
classes : positive ou négative. Vous utiliserez TF-IDF pour vectoriser le texte,
entraîner un modèle simple (comme Logistic Regression), puis évaluer ses
performances à l’aide des différentes métriques.
Environnement requis :
Python 3.x
Bibliothèques : scikit-learn , pandas , matplotlib , seaborn
Jupyter Notebook ou Google Colab
Étapes du Lab
1. Chargement du dataset
import pandas as pd
# Charger le dataset (exemple)
df = pd.read_csv("IMDB_Dataset.csv")
# Afficher les premières lignes
print([Link]())
2. Prétraitement du texte
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
# Encoder les labels (sentiment)
df['sentiment'] = df['sentiment'].map({'positive': 1,
'negative': 0})
# Division en X et y
X = df['review']
y = df['sentiment']
# Vectorisation avec TF-IDF
vectorizer = TfidfVectorizer(stop_words='english',
max_features=5000)
X_tfidf = vectorizer.fit_transform(X)
# Division en ensemble d'entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(X_tfidf, y,
test_size=0.2, random_state=42)
✅ Explication de TF-IDF :
Permet
de ………………………………………………………………………………………………………………
………………………………………………………………………………………………………………….
3. Entraînement d’un modèle (régression logistique)
from sklearn.linear_model import LogisticRegression
# Entraîner le modèle
model = LogisticRegression()
[Link](X_train, y_train)
# Prédiction
y_pred = [Link](X_test)
y_proba = model.predict_proba(X_test)[:, 1]
4. Calcul des métriques
a) Accuracy
3
from [Link] import accuracy_score
acc = accuracy_score(y_test, y_pred)
print(f"Accuracy: {acc:.4f}")
❓ Quand l’utiliser ?
………………………………………………………………………………………………………….
b) Precision, Recall, F1 Score
python
from [Link] import precision_score, recall_score,
f1_score
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
print(f"Precision: {precision:.4f}")
print(f"Recall: {recall:.4f}")
print(f"F1 Score: {f1:.4f}")
💡 Utilité :
Precision : Quand on veut ………………………………………………………………….
Recall : Quand …………………………………………………………………….. …………
F1 Score : Bon compromis quand le dataset est ………………………………………….
c) Matrice de confusion
python
from [Link] import confusion_matrix
import seaborn as sns
import [Link] as plt
cm = confusion_matrix(y_test, y_pred)
[Link](cm, annot=True, fmt="d", cmap="Blues")
[Link]('Prédictions')
[Link]('Vérités')
[Link]("Matrice de confusion")
[Link]()
📌 Interprétation :
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………..
.
d) Courbe ROC et AUC
from [Link] import roc_curve, auc
fpr, tpr, thresholds = roc_curve(y_test, y_proba)
roc_auc = auc(fpr, tpr)
[Link](fpr, tpr, label=f'ROC Curve (AUC = {roc_auc:.2f})')
[Link]([0, 1], [0, 1], 'k--') # ligne diagonale
[Link]('False Positive Rate')
[Link]('True Positive Rate')
[Link]('ROC Curve')
[Link]()
[Link]()
[Link]()
🎯 Utilité :
ROC montre………………………………………………………………………………….
AUC donne une mesure globale de ………………………………………………………
Utile quand …………………………………………………………………………………..
Questions de compréhension
1. Pourquoi l’accuracy peut être trompeuse sur un dataset déséquilibré ?
2. Dans quel cas privilégiez-vous le recall plutôt que la precision ?
3. À quoi sert la matrice de confusion ?
4. Quelle est la différence entre Bag-of-Words et TF-IDF ?
5. Qu’est-ce que l’AUC et pourquoi est-elle importante ?
Conclusion du TP
Ce TP permet de :
…………………………………………………. ;;
……………………………………………………
…………………………………………………..
……………………………………………………..