Se rendre au contenu

3.1 - Introduction à Scikit-Learn

Introduction à Scikit-Learn

Scikit-Learn est la bibliothèque de Machine Learning la plus populaire en Python, offrant une API simple et uniforme.

🏗️ Architecture Scikit-Learn

Modules Principaux

  • sklearn.model_selection : Division des données, validation croisée
  • sklearn.preprocessing : Préparation des données
  • sklearn.feature_selection : Sélection de features
  • sklearn.linear_model : Modèles linéaires
  • sklearn.ensemble : Méthodes d'ensemble
  • sklearn.cluster : Clustering
  • sklearn.metrics : Métriques d'évaluation

🔄 API Uniforme

Pattern Estimator

Tous les algorithmes suivent le même pattern :

from sklearn.linear_model import LinearRegression

# 1. Instanciation
model = LinearRegression()

# 2. Entraînement
model.fit(X_train, y_train)

# 3. Prédiction
y_pred = model.predict(X_test)

# 4. Évaluation
score = model.score(X_test, y_test)

📦 Préparation des Données

Division Train/Test

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, random_state=42, stratify=y
)

Preprocessing

from sklearn.preprocessing import StandardScaler, LabelEncoder

# Standardisation
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# Encodage des labels
le = LabelEncoder()
y_encoded = le.fit_transform(y_train)

🎯 Exemple Complet : Classification

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

# 1. Chargement des données
iris = load_iris()
X, y = iris.data, iris.target

# 2. Division des données
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 3. Entraînement du modèle
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)

# 4. Prédictions
y_pred = rf.predict(X_test)

# 5. Évaluation
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
print(classification_report(y_test, y_pred))

📊 Validation et Optimisation

Validation Croisée

from sklearn.model_selection import cross_val_score

# Validation croisée 5-fold
scores = cross_val_score(rf, X, y, cv=5)
print(f'Scores: {scores}')
print(f'Moyenne: {scores.mean():.2f} (+/- {scores.std() * 2:.2f})')

Grid Search

from sklearn.model_selection import GridSearchCV

# Définition des paramètres à tester
param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [3, 5, 7, None],
    'min_samples_split': [2, 5, 10]
}

# Grid Search avec validation croisée
grid_search = GridSearchCV(rf, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)

print(f'Meilleurs paramètres: {grid_search.best_params_}')
print(f'Meilleur score: {grid_search.best_score_:.2f}')

🚀 Avantages de Scikit-Learn

  • API consistante : Même interface pour tous les algorithmes
  • Documentation excellent : Exemples et tutoriels complets
  • Performance : Implémentations optimisées
  • Compatibilité : Intégration avec NumPy/Pandas
  • Communauté : Large écosystème et support

Découvrez l'API uniforme de Scikit-Learn pour le Machine Learning.

Évaluation
0 0

Il n'y a aucune réaction pour le moment.