COURS COMPLET
MACHINE LEARNING
1. Introduction au Machine Learning
1.1 Définition
Le Machine Learning (ML) est une branche de l’Intelligence Artificielle permettant à une
machine d'apprendre automatiquement à partir de données sans être explicitement
programmée.
Au lieu d'écrire :
SI email contient "gagner argent"
ALORS spam
on entraîne un modèle :
Données → apprentissage → modèle
Le modèle apprend les patterns statistiques.
1.2 Domaines d'application
Exemples :
Domaine Exemple
Finance détection fraude
Médecine diagnostic maladie
Marketing recommandation produits
Réseaux détection intrusion
Automobile voiture autonome
1.3 Types de Machine Learning
supervised Learning
Apprentissage avec labels.
Exemple :
Age Salaire Achat
25 400$ Oui
45 1200$ Non
Le modèle apprend :
Age + salaire → achat
Applications :
• Classification
• Régression
Unsupervised Learning
Pas de labels.
Exemple :
Segmentation clients.
Algorithme découvre :
Groupes naturels dans les données
Reinforcement Learning
Apprentissage par récompense/punition.
Exemple :
• robot
• jeu d'échecs
• voiture autonome
2. Pipeline Machine Learning
Un projet ML suit un pipeline standard.
Collecte données
↓
Préparation données
↓
Feature Engineering
↓
Training modèle
↓
Evaluation
↓
Déploiement
3. Environnement de travail
Stack classique :
Python
Jupyter Notebook
Numpy
Pandas
Scikit-learn
Matplotlib
Installation :
pip install numpy pandas scikit-learn matplotlib jupyter
Lancer notebook :
jupyter notebook
4. Manipulation des données
Bibliothèque principale :
Pandas
Exemple
Dataset :
[Link]
hours score
2 20
4 40
6 60
Charger les données
import pandas as pd
data = pd.read_csv("[Link]")
print([Link]())
Séparer variables
X = data[['hours']]
y = data['score']
5. Feature Engineering
Les features sont les variables utilisées pour l'apprentissage.
Exemple :
Dataset immobilier :
| surface | chambres | ville | prix |
On peut créer :
prix / surface
6. Algorithmes de Machine Learning
6.1 Régression linéaire
Objectif :
Prédire une valeur continue
Exemple :
heures étude → note examen
Modèle
y = ax + b
Exemple Python
from sklearn.linear_model import LinearRegression
model = LinearRegression()
[Link](X, y)
prediction = [Link]([[5]])
print(prediction)
6.2 Classification
Objectif :
Prédire une classe.
Exemple :
email → spam / non spam
Algorithmes populaires
Algorithme Utilisation
Logistic Regression classification simple
Decision Tree interprétable
Random Forest robuste
SVM haute dimension
Exemple Logistic Regression
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
[Link](X_train, y_train)
pred = [Link](X_test)
6.3 Clustering
Algorithme non supervisé.
Objectif :
regrouper données similaires
K-Means
Principe :
1. choisir K centres
2. assigner points
3. recalculer centres
Exemple
from [Link] import KMeans
model = KMeans(n_clusters=3)
[Link](X)
7. Evaluation des modèles
Train / Test split
On divise les données :
80% entrainement
20% test
Code
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2)
8. Metrics d’évaluation
Classification
métrique signification
Accuracy précision globale
Precision exactitude positive
Recall détection positive
F1 score équilibre
Exemple
from [Link] import accuracy_score
accuracy_score(y_test, pred)
9. Overfitting vs Underfitting
Overfitting
Le modèle mémorise les données.
Problème :
train accuracy = 99%
test accuracy = 60%
Solutions
• plus de données
• regularisation
• cross validation
10. Cross Validation
Technique pour améliorer la généralisation.
Exemple :
K-Fold Cross Validation
Code
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
11. Pipeline Machine Learning
Scikit-learn propose des pipelines.
Exemple
from [Link] import Pipeline
from [Link] import StandardScaler
from sklearn.linear_model import LogisticRegression
pipeline = Pipeline([
('scaler', StandardScaler()),
('model', LogisticRegression())
])
12. Sauvegarder un modèle
Joblib
import joblib
[Link](model, "[Link]")
Chargement :
model = [Link]("[Link]")
13. Déploiement d’un modèle
Plusieurs options :
technologie usage
Flask API ML
FastAPI API rapide
Docker container
Kubernetes production
Exemple API FastAPI
from fastapi import FastAPI
import joblib
app = FastAPI()
model = [Link]("[Link]")
@[Link]("/predict")
def predict(hours: float):
result = [Link]([[hours]])
return {"score": result[0]}
14. Lab pratique
Projet :
Prédiction du prix immobilier
Dataset :
surface
chambres
age maison
prix
Étapes
Charger dataset
data = pd.read_csv("[Link]")
Préparer données
Train / Test
Entrainer modèle
Evaluer
Sauvegarder
LABS PRATIQUES MACHINE
LEARNING
LAB 1 — Installation de l’environnement ML
Objectif
Installer l’environnement Python pour le Machine Learning.
Étapes
Créer un environnement :
python3 -m venv ml-env
Activer :
Linux / Mac
source ml-env/bin/activate
Windows
ml-env\Scripts\activate
Installer les librairies :
pip install numpy pandas scikit-learn matplotlib jupyter
Lancer Jupyter :
jupyter notebook
Résultat attendu :
Interface web Jupyter ouverte
LAB 2 — Charger un dataset avec Pandas
Objectif
Lire un dataset CSV.
Dataset :
[Link]
hours score
2 21
4 45
6 63
Code :
import pandas as pd
data = pd.read_csv("[Link]")
print([Link]())
Résultat attendu :
hours score
2 21
4 45
6 63
LAB 3 — Analyse exploratoire des données
Objectif
Comprendre les données.
Code :
print([Link]())
Visualisation :
import [Link] as plt
[Link](data['hours'], data['score'])
[Link]()
Observation :
relation linéaire positive
LAB 4 — Préparation des données
Objectif
Séparer variables indépendantes et cible.
Code :
X = data[['hours']]
y = data['score']
LAB 5 — Train/Test Split
Objectif
Diviser les données.
Code :
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2)
Résultat :
80% training
20% test
LAB 6 — Régression linéaire
Objectif
Prédire une note.
Code :
from sklearn.linear_model import LinearRegression
model = LinearRegression()
[Link](X_train, y_train)
prediction = [Link]([[5]])
print(prediction)
Résultat attendu :
environ 50
LAB 7 — Visualisation du modèle
Code :
[Link](X, y)
[Link](X, [Link](X))
[Link]()
Résultat :
droite de regression
LAB 8 — Classification simple
Dataset :
[Link]
length links spam
50 1 0
200 10 1
Code :
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
[Link](X_train, y_train)
LAB 9 — Evaluation modèle classification
Code :
from [Link] import accuracy_score
pred = [Link](X_test)
print(accuracy_score(y_test, pred))
LAB 10 — Matrice de confusion
Code :
from [Link] import confusion_matrix
print(confusion_matrix(y_test, pred))
Résultat :
TP FP
FN TN
LAB 11 — Arbre de décision
Code :
from [Link] import DecisionTreeClassifier
model = DecisionTreeClassifier()
[Link](X_train, y_train)
LAB 12 — Random Forest
Code :
from [Link] import RandomForestClassifier
model = RandomForestClassifier()
[Link](X_train, y_train)
Avantage :
moins de sur-apprentissage
LAB 13 — Clustering avec K-Means
Dataset :
[Link]
revenu age
1500 22
4500 45
Code :
from [Link] import KMeans
model = KMeans(n_clusters=3)
[Link](data)
LAB 14 — Visualisation des clusters
Code :
[Link](data['revenu'], data['age'], c=model.labels_)
[Link]()
Résultat :
3 groupes clients
LAB 15 — Feature Scaling
Objectif :
normaliser les données.
Code :
from [Link] import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
LAB 16 — Pipeline Machine Learning
Code :
from [Link] import Pipeline
pipeline = Pipeline([
('scaler', StandardScaler()),
('model', LogisticRegression())
])
[Link](X_train, y_train)
LAB 17 — Cross Validation
Code :
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
print(scores)
Résultat :
5 scores accuracy
LAB 18 — Sauvegarde du modèle
Code :
import joblib
[Link](model, "[Link]")
Chargement :
model = [Link]("[Link]")
LAB 19 — API de prédiction
Créer API avec FastAPI.
from fastapi import FastAPI
import joblib
app = FastAPI()
model = [Link]("[Link]")
@[Link]("/predict")
def predict(hours: float):
result = [Link]([[hours]])
return {"score": result[0]}
Lancer :
uvicorn main:app --reload
LAB 20 — Mini projet complet
Projet :
Prédiction réussite étudiant
Dataset :
hours absences score
Pipeline :
Pandas
↓
Scikit-learn
↓
MLflow
↓
Docker
↓
Kubernetes
Étapes :
1 Collecte données
2 Nettoyage
3 Training modèle
4 Evaluation
5 API
6 Déploiement
Résultat
• Python ML
• Scikit-learn
• Data preprocessing
• Training modèles
• Evaluation
• API ML
• pipeline ML