Lance-toi en Python scikit Learn : ton premier pas concret aujourd'hui
Python scikit Learn : l'essentiel en un article — vrai code, schémas et étapes concrètes, extraits d'un cours de 33 leçons.
La meilleure façon d'apprendre Python scikit Learn, c'est de faire. Cet article te met le pied à l'étrier avec des extraits pratiques tirés d'un cours de 33 leçons — de quoi obtenir un premier résultat dès aujourd'hui.
- Introduction et installation
- Bases du Machine Learning
- Preprocessing des donnees
- Regression supervisee
- Classification supervisee
Premier modele en 10 lignes (Iris)
Le dataset Iris
150 fleurs d'iris reparties en 3 especes (setosa, versicolor, virginica). 4 features mesurees : longueur et largeur des sepales et des petales.
from sklearn.datasets import load_iris iris = load_iris() print("Features :", iris.feature_names) print("Classes :", iris.target_names) print("Shape X :", iris.data.shape) # (150, 4) print("Shape y :", iris.target.shape) # (150,)
Le code complet (10 lignes)
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier X, y = load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = KNeighborsClassifier(n_neighbors=5) model.fit(X_train, y_train) score = model.score(X_test, y_test) print(f"Accuracy : {score:.2%}") # ~96.7%
C'est tout. Vous venez de creer un modele de classification qui distingue 3 especes d'iris avec ~97% de precision.
Decryptage ligne par ligne
| Ligne | Role |
|---|---|
load_iris(return_X_y=True) | Charge X (features) et y (labels) directement |
train_test_split(...) | Decoupe 80% train / 20% test |
random_state=42 | Reproductibilite (toujours la meme division) |
KNeighborsClassifier(...) | Choix de l'algorithme : k-NN avec k=5 |
model.fit(...) | Entrainement : memorise les exemples |
model.score(...) | Evalue l'accuracy sur le test |
Faire une prediction sur une nouvelle fleur
import numpy as np # Une fleur : sepale 5.1 x 3.5, petale 1.4 x 0.2 nouvelle_fleur = np.array([[5.1, 3.5, 1.4, 0.2]]) prediction = model.predict(nouvelle_fleur) print("Predit :", iris.target_names[prediction[0]]) # > 'setosa' # Probabilites pour chaque classe proba = model.predict_proba(nouvelle_fleur) print("Probabilites :", proba) # > [[1.0, 0.0, 0.0]] -> 100% setosa
Visualiser le resultat
import matplotlib.pyplot as plt fig, axes = plt.subplots(1, 2, figsize=(12, 5)) # Vrais labels axes[0].scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap="viridis") axes[0].set_title("Vraies classes") axes[0].set_xlabel("Longueur sepale") axes[0].set_ylabel("Largeur sepale") # Predictions predictions = model.predict(X_test) axes[1].scatter(X_test[:, 0], X_test[:, 1], c=predictions, cmap="viridis") axes[1].set_title("Predictions du modele") axes[1].set_xlabel("Longueur sepale") plt.tight_layout() plt.show()
Le pattern fit / predict / score
fit → predict → score) est la meme pour TOUS les modeles scikit-learn. Une fois apprise, vous pouvez essayer 30 algorithmes en changeant juste l'import.# Meme code, modele different : from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier(random_state=42) model.fit(X_train, y_train) print(model.score(X_test, y_test)) # Meme code, encore un autre : from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X_train, y_train) print(model.score(X_test, y_test))
Bonnes pratiques des le debut
Defi pratique
- Essayez 3 algorithmes differents (KNN, DecisionTree, RandomForest)
- Variez
random_stateet observez si le score change - Essayez
k=1puisk=10dans KNeighborsClassifier
Sauvegarder un modele en production
joblib : la methode recommandee
import joblib # Sauvegarder joblib.dump(pipe, "model.joblib") # Charger loaded_pipe = joblib.load("model.joblib") preds = loaded_pipe.predict(X_new)
Avec compression
# Niveau 0 (rapide) a 9 (max compression) joblib.dump(pipe, "model.joblib.gz", compress=3) loaded = joblib.load("model.joblib.gz")
pickle (alternative)
import pickle with open("model.pkl", "wb") as f: pickle.dump(pipe, f) with open("model.pkl", "rb") as f: pipe = pickle.load(f)
Production : packaging complet
import joblib import sklearn import numpy as np # Sauvegarder modele + metadata artifact = { "model": pipe, "feature_names": feature_names, "target_names": target_names, "sklearn_version": sklearn.__version__, "numpy_version": np.__version__, "training_date": "2026-05-15", "metrics": {"f1": 0.94, "auc": 0.97} } joblib.dump(artifact, "model_v1.joblib")
API FastAPI minimale
from fastapi import FastAPI from pydantic import BaseModel import joblib app = FastAPI() artifact = joblib.load("model_v1.joblib") model = artifact["model"] class Input(BaseModel): features: list[float] @app.post("/predict") def predict(data: Input): pred = model.predict([data.features]) proba = model.predict_proba([data.features])[0].tolist() return {"prediction": int(pred[0]), "probabilities": proba}
Versionner avec MLflow
import mlflow import mlflow.sklearn with mlflow.start_run(): pipe.fit(X_tr, y_tr) # Logger params, metriques, modele mlflow.log_params({"max_depth": 10, "n_estimators": 200}) mlflow.log_metric("f1", 0.94) mlflow.sklearn.log_model(pipe, "model", registered_model_name="my_model")
Qu'est-ce que le machine learning ?
Definition pragmatique
Le machine learning (ou apprentissage automatique) consiste a construire un programme qui apprend a effectuer une tache a partir d'exemples plutot que de regles ecrites a la main.
Quand utiliser le ML ?
| Probleme | Approche |
|---|---|
| Convertir Celsius en Fahrenheit | Formule classique (pas de ML) |
| Predire le prix d'une maison | ML supervise (regression) |
| Detecter un spam | ML supervise (classification) |
| Grouper des clients similaires | ML non supervise (clustering) |
| Reconnaitre un visage | Deep learning (variante ML) |
| Battre un humain aux echecs | ML par renforcement |
Les 3 familles de ML
1. Supervise
On a des donnees avec etiquettes (X, y).
But : predire y a partir de X.
2. Non supervise
On a des donnees sans etiquettes (X seul).
But : decouvrir des structures cachees.
3. Renforcement
Un agent apprend par essai-erreur dans un environnement.
But : maximiser une recompense.
Exemples concrets par famille
Supervise — Regression
# X : surface du logement, nb pieces, quartier... # y : prix de vente (chiffre) # But : predire le prix d'une nouvelle maison
Supervise — Classification
# X : contenu de l'email # y : "spam" ou "non-spam" (categorie) # But : classer un nouvel email
Non supervise — Clustering
# X : achats des clients (montant, frequence...) # Pas de y # But : regrouper en 3-5 segments clientele
Le workflow type d'un projet ML
Pourquoi scikit-learn ?
Cet article couvre les extraits les plus utiles — le cours complet Python scikit Learn (10 chapitres, 33 leçons, exercices corrigés et projet final) t'emmène jusqu'au bout.
./acceder-au-cours-complet cours gratuit : Maîtriser Claude CodeFAQ
Combien de temps pour apprendre Python scikit Learn ?
Faut-il des prérequis ?
Par où commencer concrètement ?
📬 Tu veux recevoir ce type de guide chaque semaine ? Abonne-toi gratuitement — code réel, zéro blabla.