TP Regression

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

TP: Régression Logistique

Objectifs:
Dans ce TP, nous allons explorer les concepts fondamentaux de la régression logistique en
Python, en utilisant des données simulées. L'objectif est de construire un modèle capable de
prédire le succès ou l'échec des étudiants en fonction de leurs heures d'étude et de leurs
performances passées.

Exécution du code sur Google Colab

Pour exécuter ce tp sur Google Colab, suivez ces étapes :

1. Ouvrez un nouveau notebook Colab (https://colab.research.google.com/).


2. Créez une nouvelle cellule pour chaque étape et exécutez les codes

Méthodologie :
Étape 1 : Génération des données
Dans cette étape, nous avons généré un jeu de données simulé représentant les heures d'étude, les
notes passées des étudiants, et leur réussite (succès ou échec). Le jeu de données a été exporté en
format CSV pour une utilisation ultérieure.

# Import des bibliothèques nécessaires


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Création d'un jeu de données simulé


np.random.seed(42)

# Générer des données : temps d'étude (heures) et notes passées (sur


100)
n_samples = 200
study_time = np.random.normal(5, 2, n_samples) # Moyenne 5h, écart-
type 2h
past_scores = np.random.normal(60, 15, n_samples) # Moyenne 60, écart-
type 15

# Générer une variable cible (1 = Réussite, 0 = Échec)


success = (0.3 * study_time + 0.1 * past_scores + np.random.normal(0,
1, n_samples)) > 7
success = success.astype(int) # Convertir en 0 ou 1
# Créer un DataFrame
data = pd.DataFrame({
'study_time': study_time,
'past_scores': past_scores,
'success': success
})

# Visualiser un échantillon des données


print(data.head())

# Sauvegarder le jeu de données en CSV


data.to_csv("student_data.csv", index=False)

Étape 2 : Analyse exploratoire des données


L'étape 2 consiste à charger et explorer les données. On commence par importer le fichier CSV
contenant les informations des étudiants dans un DataFrame. Ensuite, des statistiques descriptives
sont générées pour résumer les principales caractéristiques des variables (comme la moyenne et
l'écart type).

# Charger le jeu de données


data = pd.read_csv("student_data.csv")

# Statistiques descriptives
print(data.describe())

# Visualisation des données


plt.figure(figsize=(10, 6))
plt.scatter(data['study_time'], data['past_scores'], c=data['success'],
cmap='viridis', edgecolor='k')
plt.colorbar(label='Success (1=Yes, 0=No)')
plt.xlabel('Study Time (hours)')
plt.ylabel('Past Scores (out of 100)')
plt.title('Visualisation des données')
plt.show()

output :
Explication des Résultats Visuels
Le nuage de points montre comment les étudiants se répartissent en fonction de leurs heures d'étude
et de leurs scores passés, tout en prenant en compte leur réussite ou échec. On peut observer certaines
tendances, comme :
 Les étudiants ayant un score passé élevé ou beaucoup d'heures d'étude tendent à réussir
(point jaune).
 Les étudiants avec moins d'heures d'étude ou un faible score passé sont souvent classés
comme ayant échoué (point violet).
Étape 3 : Préparation des données
Divisons les données en ensembles d’entraînement (80%) et de test (20 %).
from sklearn.model_selection import train_test_split

# Variables indépendantes (X) et dépendante (y)


X = data[['study_time', 'past_scores']]
y = data['success']

# Division en ensembles d'entraînement et de test (80% / 20%)


X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2, random_state=42)

print(f"Taille de l'ensemble d'entraînement : {X_train.shape[0]}")


print(f"Taille de l'ensemble de test : {X_test.shape[0]}")

Étape 4 : Entraînement du modèle de régression logistique


from sklearn.linear_model import LogisticRegression

# Créer et entraîner le modèle


model = LogisticRegression()
model.fit(X_train, y_train)

# Afficher les coefficients


print("Coefficients :", model.coef_)
print("Intercept :", model.intercept_)

Étape 5 : Évaluation du modèle


from sklearn.metrics import accuracy_score, confusion_matrix,
classification_report

# Prédictions
y_pred = model.predict(X_test)

# Évaluation
print("Précision :", accuracy_score(y_test, y_pred))
print("\nMatrice de confusion :\n", confusion_matrix(y_test, y_pred))
print("\nRapport de classification :\n", classification_report(y_test,
y_pred))
output :

Précision : 0.775 (77.5%)

 Cela signifie que 77.5% des prédictions du modèle sont correctes.

Matrice de confusion :

Prédit 0 (Échec) Prédit 1 (Succès)


Vrai 0 (Échec) 11 3
Vrai 1 (Succès) 6 20

Interprétation :

 Vrai négatif (11) : Le modèle a correctement prédit "Échec" pour 11 étudiants.


 Faux positif (3) : Le modèle a prédit "Succès" pour 3 étudiants qui ont réellement échoué.
 Faux négatif (6) : Le modèle a prédit "Échec" pour 6 étudiants qui ont réellement réussi.
 Vrai positif (20) : Le modèle a correctement prédit "Succès" pour 20 étudiants.

Étape 6 : Visualisation des résultats


# Visualisation de la frontière de décision
x_min, x_max = X['study_time'].min() - 1, X['study_time'].max() + 1
y_min, y_max = X['past_scores'].min() - 1, X['past_scores'].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min,
y_max, 0.1))

Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.figure(figsize=(10, 6))
plt.contourf(xx, yy, Z, alpha=0.8, cmap='viridis')
plt.scatter(data['study_time'], data['past_scores'], c=data['success'],
edgecolor='k', cmap='viridis')
plt.xlabel('Study Time (hours)')
plt.ylabel('Past Scores (out of 100)')
plt.title('Frontière de décision')
plt.show()
output :

 Zone jaune : le modèle prédit "succès" (1).


 Zone violette : le modèle prédit "échec" (0).
 Les points correctement classés par le modèle se trouvent dans la bonne zone (par exemple,
un point jaune dans la zone jaune).
 Les points mal classés par le modèle se trouvent dans la zone opposée (par exemple, un point
jaune dans la zone violette).

Conclusion

L'analyse des données montre la relation entre le temps d'étude, les scores passés et la
réussite des étudiants. Grâce aux statistiques descriptives et à la visualisation graphique, nous
pouvons observer des tendances intéressantes : par exemple, les étudiants ayant plus
d'heures d'étude ou un meilleur score passé ont plus de chances de réussir. Cela suggère que
ces deux facteurs influencent probablement la réussite.

Vous aimerez peut-être aussi