Utilisation de l'IA par les Étudiants & Performance Académique
Un projet complet d'analyse de données et d'apprentissage automatique (Machine Learning) qui examine comment l'utilisation des outils d'intelligence artificielle (IA) par les étudiants influence leur performance académique.
Jeu de données (Dataset) : Kaggle – Students AI Usage and Academic Performance
Structure du Projet
students_ai_analysis/
├── data/
│ ├── raw/ # Données brutes (non modifiées)
│ │ └── students_ai_usage.csv
│ └── processed/ # Données nettoyées et transformées
├── notebooks/
│ ├── 01_data_loading_and_cleaning.ipynb # Chargement et nettoyage
│ ├── 02_eda.ipynb # Analyse exploratoire (EDA)
│ └── 03_modeling.ipynb # Modélisation (ML)
├── src/
│ ├── __init__.py
│ ├── data_processing.py # Chargement, nettoyage, ingénierie des variables
│ ├── visualization.py # Fonctions de visualisation (graphiques)
│ ├── modeling.py # Entraînement et évaluation des modèles
│ └── utils.py # Fonctions utilitaires (chemins, sauvegarde)
├── models/ # Modèles sauvegardés (créé automatiquement)
├── streamlit_app.py # Tableau de bord interactif (Dashboard)
├── requirements.txt # Dépendances Python (liste des bibliothèques)
├── environment.yml # Environnement Conda (optionnel)
├── .gitignore # Fichiers ignorés par Git
├── README.md # Ce fichier
└── LICENSE # Licence du projet (MIT)
Fonctionnalités
- Chargement et Nettoyage des Données – Gestion des valeurs manquantes (NaN), standardisation des formats
- Analyse Exploratoire (EDA = Exploratory Data Analysis) – Carte de chaleur des corrélations (heatmap), histogrammes, boîtes à moustaches (boxplots), nuages de points (scatter plots)
- Ingénierie des Variables (Feature Engineering) – Création de nouvelles colonnes : changement de note, catégorie de performance, intensité d'étude
- Modèles de Régression – Prédiction de
grades_after_ai(note après IA) avec Régression Linéaire, Forêt Aléatoire (Random Forest), Gradient Boosting - Modèles de Classification – Prédiction de la catégorie de performance (Faible / Moyen / Élevé) avec Régression Logistique, Forêt Aléatoire, Gradient Boosting
- Évaluation des Modèles – MAE (erreur absolue moyenne), MSE (erreur quadratique moyenne), RMSE (racine de MSE), R² pour la régression ; Accuracy (précision globale), F1 (score F1), matrices de confusion pour la classification
- Tableau de Bord Streamlit (Dashboard) – Visualisations interactives, comparaison des modèles, prédictions en direct
Guide d'Installation
Prérequis
- Python 3.8 – 3.13 (testé sur 3.10, 3.11 et 3.13)
pip– gestionnaire de paquets Python (inclus avec Python)git– optionnel, pour cloner le dépôt (repository)
Option 1 : Utiliser venv + pip (Recommandé)
venv est un outil intégré à Python qui crée un environnement virtuel — un dossier isolé contenant ses propres bibliothèques Python, séparé du système.
Étape 1 – Créer un environnement virtuel :
# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python3 -m venv venv
source venv/bin/activate
Après l'activation, votre terminal affiche
(venv)au début de la ligne.
Étape 2 – Mettre à jour pip et installer les dépendances :
python -m pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
Note Windows : Utilisez toujours
python -m pip install --upgrade pipau lieu depip install --upgrade pippour éviter les erreurs de permission.
Étape 3 – Vérifier l'installation :
python -c "import pandas, sklearn, streamlit; print('Toutes les bibliothèques sont installées avec succès')"
Option 2 : Utiliser Conda
Conda est un gestionnaire d'environnements et de paquets alternatif à pip/venv.
conda env create -f environment.yml
conda activate students_ai
Utiliser le jeu de données Kaggle (Optionnel)
Le projet inclut un jeu de données représentatif dans data/raw/. Pour utiliser le jeu de données Kaggle complet :
- Téléchargez
students_ai_usage.csvdepuis Kaggle - Remplacez le fichier dans
data/raw/students_ai_usage.csv
Exécution du Projet
Notebooks Jupyter
Les notebooks (carnets de code interactifs) sont à exécuter dans l'ordre :
# Option A : Ouvrir dans VS Code (recommandé – aucune installation supplémentaire)
# Ouvrez les fichiers .ipynb et sélectionnez le kernel (noyau) venv
# Option B : Utiliser Jupyter dans le navigateur
pip install notebook
jupyter notebook notebooks/
01_data_loading_and_cleaning.ipynb– Charger, inspecter, nettoyer et sauvegarder les données traitées02_eda.ipynb– Visualisations et analyse exploratoire03_modeling.ipynb– Entraîner les modèles, évaluer, comparer et sauvegarder
Tableau de Bord Streamlit (Dashboard)
Streamlit est une bibliothèque Python qui transforme un script en application web interactive.
streamlit run streamlit_app.py
Le tableau de bord s'ouvre à l'adresse http://localhost:8501 avec quatre pages :
| Page | Description |
|---|---|
| Vue d'ensemble | Résumé du jeu de données, métriques clés, aperçu des données |
| Analyse Exploratoire (EDA) | Histogrammes, carte de corrélation, comparaisons interactives |
| Performance des Modèles | Métriques de régression et classification, importance des variables |
| Prédiction | Saisir les informations d'un étudiant et obtenir la performance prédite |
Résolution de Problèmes
Erreurs Courantes d'Installation
pip install échoue avec des conflits de versions :
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
Si une version spécifique échoue :
# Essayer sans contrainte de version
pip install pandas numpy scikit-learn matplotlib seaborn streamlit ipykernel
ModuleNotFoundError: No module named 'sklearn' (module introuvable) :
pip install scikit-learn
ImportError avec numpy sur Python 3.11 :
pip install numpy>=1.24.0
Streamlit ne démarre pas / port déjà utilisé :
streamlit run streamlit_app.py --server.port 8502
Erreur de chemin trop long sur Windows (long path) :
Si vous voyez OSError: [Errno 2] No such file or directory avec un chemin très long,
activez le support des chemins longs Windows en exécutant ceci dans un PowerShell Administrateur :
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
Puis redémarrez votre terminal et relancez l'installation.
Notes par Version de Python
| Version Python | Notes |
|---|---|
| 3.8 | Toutes les bibliothèques fonctionnent. Utiliser scikit-learn<1.3 si problème. |
| 3.9 | Entièrement supporté. Aucun problème connu. |
| 3.10 | Recommandé. Meilleure compatibilité. |
| 3.11 | Supporté. Utiliser numpy>=1.24 en cas d'erreur de compilation. |
| 3.12 | Supporté. Toutes les bibliothèques ont des wheels (paquets pré-compilés) disponibles. |
| 3.13 | Testé et fonctionnel. Utiliser python -m pip pour les mises à jour. |
Différences GPU / CPU
Ce projet utilise uniquement des bibliothèques CPU (processeur central). Aucun GPU (carte graphique) n'est requis. Tous les modèles scikit-learn s'exécutent sur CPU.
Problèmes de Kernel (Noyau) des Notebooks
Si les notebooks ne trouvent pas le bon kernel Python :
python -m ipykernel install --user --name students_ai --display-name "Python (students_ai)"
Puis sélectionnez "Python (students_ai)" comme kernel dans VS Code ou Jupyter.
Description du Jeu de Données
| Colonne | Type | Description |
|---|---|---|
age |
int (entier) | Âge de l'étudiant (14–19) |
education_level |
str (texte) | Niveau d'éducation : "school" (lycée) ou "college" (université) |
study_hours_per_day |
float (décimal) | Heures d'étude par jour (1.0–5.0) |
uses_ai |
str (texte) | Utilise l'IA : "Yes" (oui) ou "No" (non) |
ai_tools_used |
str (texte) | Outil IA utilisé : "ChatGPT", "Copilot", "Gemini" ou "None" (aucun) |
purpose_of_ai |
str (texte) | But de l'utilisation : "Research" (recherche), "Homework" (devoirs), "Coding" (programmation) ou "None" (aucun) |
grades_before_ai |
int (entier) | Note avant l'utilisation de l'IA (55–75) |
grades_after_ai |
int (entier) | Note après l'utilisation de l'IA (55–89) |
daily_screen_time_hours |
int (entier) | Temps d'écran quotidien en heures (2–7) |
Variables Créées (Feature Engineering)
| Variable | Description |
|---|---|
grade_change |
Changement de note : grades_after_ai - grades_before_ai |
grade_change_pct |
Changement en pourcentage (%) |
performance_category |
Catégorie : Low (Faible, ≤65) / Medium (Moyen, ≤78) / High (Élevé, >78) |
ai_usage_binary |
1 si l'étudiant utilise l'IA, 0 sinon |
study_intensity |
Intensité d'étude : study_hours_per_day / daily_screen_time_hours |
Modèles
Régression (cible : grades_after_ai)
La régression prédit une valeur numérique continue (la note exacte).
| Modèle | Description |
|---|---|
| Régression Linéaire (Linear Regression) | Modèle linéaire de base — trace une droite à travers les données |
| Forêt Aléatoire (Random Forest Regressor) | Ensemble de 100 arbres de décision qui votent ensemble |
| Gradient Boosting Regressor | 100 arbres construits séquentiellement, chacun corrigeant les erreurs du précédent |
Classification (cible : performance_category)
La classification prédit une catégorie (Faible, Moyen ou Élevé).
| Modèle | Description |
|---|---|
| Régression Logistique (Logistic Regression) | Modèle linéaire adapté pour la classification multi-classes |
| Forêt Aléatoire (Random Forest Classifier) | Ensemble de 100 arbres de décision qui votent pour une catégorie |
| Gradient Boosting Classifier | 100 arbres séquentiels, chacun corrigeant les erreurs du précédent |
Métriques d'Évaluation
| Métrique | Type | Signification |
|---|---|---|
| MAE (Mean Absolute Error) | Régression | Erreur absolue moyenne — écart moyen entre prédiction et réalité |
| MSE (Mean Squared Error) | Régression | Erreur quadratique moyenne — pénalise davantage les grosses erreurs |
| RMSE (Root MSE) | Régression | Racine carrée de MSE — même unité que la variable cible |
| R² (R-squared) | Régression | Coefficient de détermination — 1.0 = parfait, 0.0 = aussi bon que la moyenne |
| Accuracy | Classification | Précision globale — pourcentage de prédictions correctes |
| F1 Score | Classification | Moyenne harmonique de la précision et du rappel — utile si les classes sont déséquilibrées |
Licence
Licence MIT – voir LICENSE pour les détails.