Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🔬
Debutant 25 min Scikit-learn

Debuter avec Scikit-learn

Pourquoi Scikit-learn ?

Scikit-learn est un des outils les plus populaires et puissants pour la science de données en Python. Il s'agit d'une bibliothèque open source qui fournit une variété large de fonctionnalités pour le traitement, l'apprentissage et l'évaluation des modèles d'apprentissage automatique (ML).

Dans un monde où les entreprises se battent pour analyser et interpréter de vastes quantités de données, Scikit-learn offre des solutions pratiques et efficaces. Par exemple, imaginez une entreprise qui souhaite prédire le taux de churn de ses clients. Avec Scikit-learn, elle peut facilement préparer les données, entraîner un modèle d'apprentissage automatique et évaluer sa performance pour prendre des décisions plus éclairées.

Prerequis

Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

  • Connaissance de base en Python
  • Installation de Python (version 3.6 ou supérieure)
  • Un environnement de développement intégré (IDE) comme Visual Studio Code, PyCharm, ou Jupyter Notebook
  • Bibliothèque Scikit-learn

Vous pouvez installer Scikit-learn via pip :

pip install scikit-learn

Concepts fondamentaux

1. Ensemble de données (Dataset)

Un ensemble de données est une collection d'objets (appelés instances ou échantillons) avec leurs attributs et leur classe cible (si applicable). Dans Scikit-learn, les ensembles de données sont généralement représentés par des objets DataFrame de la bibliothèque pandas.

import pandas as pd

## Exemple d'ensemble de données
data = {
    'age': [25, 30, 35, 40],
    'income': [50000, 60000, 70000, 80000],
    'purchased': ['No', 'Yes', 'Yes', 'No']
}
df = pd.DataFrame(data)
print(df)

2. Features et Target

Les features sont les variables prédictives (ou caractéristiques) qui déterminent la classe cible. La target est la variable que nous essayons de prédire.

X = df[['age', 'income']]
y = df['purchased']

3. Apprentissage supervisé

L'apprentissage supervisé est un type d'apprentissage où le modèle est entraîné sur un ensemble de données étiquetées, c'est-à-dire que les sorties correctes sont connues.

from sklearn.model_selection import train_test_split

## Diviser les données en ensembles d'entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4. Modèles (Models)

Scikit-learn propose une variété de modèles prêts à l'emploi pour différents types de problèmes. Par exemple, nous pouvons utiliser un modèle de régression logistique pour résoudre notre problème de classification.

from sklearn.linear_model import LogisticRegression

## Créer et entraîner le modèle
model = LogisticRegression()
model.fit(X_train, y_train)

5. Évaluation du modèle (Model Evaluation)

Après l'entraînement, il est important d'évaluer la performance du modèle sur un ensemble de test.

from sklearn.metrics import accuracy_score

## Prédire les valeurs de test et évaluer le modèle
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

Mise en pratique : projet fil rouge

Voici un mini-projet complet pour créer une API de prédiction d'achat. Nous utiliserons Flask, un framework web Python léger.

Étape 1 : Installer les dépendances

pip install scikit-learn flask pandas numpy

Étape 2 : Créer le fichier app.py

from flask import Flask, request, jsonify
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

app = Flask(__name__)

## Charger les données et préparer le modèle
data = {
    'age': [25, 30, 35, 40],
    'income': [50000, 60000, 70000, 80000],
    'purchased': ['No', 'Yes', 'Yes', 'No']
}
df = pd.DataFrame(data)
X = df[['age', 'income']]
y = df['purchased']

## Diviser les données en ensembles d'entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

## Créer et entraîner le modèle
model = LogisticRegression()
model.fit(X_train, y_train)

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    age = data['age']
    income = data['income']
    
    # Préparer les données de prédiction
    prediction = model.predict([[age, income]])
    
    return jsonify({'prediction': prediction[0]})

if __name__ == '__main__':
    app.run(debug=True)

Étape 3 : Exécuter l'API

python app.py

Étape 4 : Tester l'API

Vous pouvez tester l'API en envoyant une requête POST avec les données de prédiction.

curl -X POST http://127.0.0.1:5000/predict -H "Content-Type: application/json" -d '{"age": 30, "income": 60000}'

Erreurs frequentes et debugging

1. ValueError: could not convert string to float

Ce message d'erreur indique que Scikit-learn ne peut pas convertir une chaîne de caractères en flottant.

## ❌ Mauvais
data = {
    'age': ['25', '30', '35', '40'],
    'income': [50000, 60000, 70000, 80000],
    'purchased': ['No', 'Yes', 'Yes', 'No']
}
df = pd.DataFrame(data)
python
## ✅ Correct
data = {
    'age': [25, 30, 35, 40],
    'income': [50000, 60000, 70000, 80000],
    'purchased': ['No', 'Yes', 'Yes', 'No']
}
df = pd.DataFrame(data)

2. AttributeError: module 'sklearn.linear_model' has no attribute 'LogisticRegressionClassifier'

Ce message d'erreur indique que vous essayez d'utiliser une classe qui n'existe pas.

## ❌ Mauvais
from sklearn.linear_model import LogisticRegressionClassifier

model = LogisticRegressionClassifier()
python
## ✅ Correct
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

3. ModuleNotFoundError: No module named 'sklearn.model_selection'

Ce message d'erreur indique que Scikit-learn n'est pas correctement installé.

pip install scikit-learn

Pour aller plus loin

  1. Apprendre les modèles de classification non supervisée : Découvrez comment utiliser des modèles comme l'ACP (Analyse en Composantes Principales) pour analyser les données sans étiquette.
  2. Utiliser les pipelines : Les pipelines vous permettent d'automatiser le processus de préparation et de modèleisation des données.
  3. Exercice pratique : Créez un système de recommandation basé sur l'apprentissage collaboratif.

Quel est votre niveau de compétence en machine learning ? Vous pouvez commencer par essayer ces exercices pour vous familiariser avec Scikit-learn et continuer à apprendre avec des projets plus complexes.

Besoin d'aide sur Scikit-learn ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Quel est le but principal de Scikit-learn?
Scikit-learn est une bibliothèque open source pour la science des données et l'apprentissage automatique en Python, principalement utilisée pour construire des modèles de machine learning et effectuer des analyses statistiques.
Quels sont les avantages d'utiliser Scikit-learn?
Scikit-learn offre plusieurs avantages, notamment une API simple et intuitive, un large éventail d'algorithmes d'apprentissage automatique, des outils de prétraitement des données, et une bonne documentation. Il est également open source et facilement intégrable dans les projets Python.
Comment installer Scikit-learn?
Pour installer Scikit-learn, vous pouvez utiliser pip, le gestionnaire de paquets Python. Exécutez la commande suivante dans votre terminal : `pip install scikit-learn`. Assurez-vous que Python et pip sont correctement installés sur votre système.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.