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.