Machine Learning - Oil & Gas 7 mai 2026
Machine Learning
Applications dans l’industrie Pétrole & Gaz
Apprentissage Automatique pour l’énergie
Concepts clés · Pipelines · Clustering
Forage · Production · Géologie
7 mai 2026
Document pédagogique - Version 2025 - Spécial Oil & Gas
1 / 14
Machine Learning - Oil & Gas 7 mai 2026
Table des matières
1 Concepts clés du Machine Learning 3
1.1 Les 5 piliers fondamentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Les données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Les features (caractéristiques) . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Les étiquettes (labels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Le modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 La généralisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Phases d’un pipeline d’apprentissage 4
2.1 Visualisation du pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Les 3 phases essentielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Types d’apprentissage 5
3.1 Apprentissage supervisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Apprentissage non supervisé . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Apprentissage par renforcement . . . . . . . . . . . . . . . . . . . . . . . . 5
4 Apprentissage non supervisé - Clustering 5
4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Applications courantes en Oil & Gas . . . . . . . . . . . . . . . . . . . . . 6
5 Algorithmes de clustering 6
5.1 K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1.1 Principe en 5 étapes . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1.2 Code K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2 DBSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2.2 Code DBSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.3 Comparaison K-means vs DBSCAN . . . . . . . . . . . . . . . . . . . . . . 7
6 Visualisation et interprétation 7
6.1 Réduction de dimension avec PCA . . . . . . . . . . . . . . . . . . . . . . 7
7 Exercices corrigés - Contexte Oil & Gas 7
7.1 Exercice 1 : Identifier les composantes - Forage . . . . . . . . . . . . . . . . 7
7.2 Exercice 2 : Choisir l’algorithme - Production . . . . . . . . . . . . . . . . 8
7.3 Exercice 3 : Clustering des formations géologiques . . . . . . . . . . . . . . 8
7.4 Exercice 4 : Détection d’anomalies sur tête de puits . . . . . . . . . . . . . 10
7.5 Exercice 5 : Segmentation de puits pour optimisation de production . . . . 11
7.6 Exercice 6 : Application réelle - Prédiction d’usure de trépan . . . . . . . . 12
7.7 Exercice 7 : Interprétation pédagogique pour un ingénieur pétrolier . . . . 12
8 Résumé visuel - Applications Oil & Gas 13
9 Glossaire spécifique Oil & Gas 13
10 Ressources complémentaires 13
2 / 14
Machine Learning - Oil & Gas 7 mai 2026
1 Concepts clés du Machine Learning
Le Machine Learning (apprentissage automatique) est un domaine de l’intelli-
gence artificielle qui permet aux ordinateurs d’apprendre à partir de données, sans
être explicitement programmés.
Application dans l’industrie Oil & Gas : Le ML permet aujourd’hui de pré-
dire les pannes de pompes, d’optimiser la production, de détecter des anomalies
sismiques et d’anticiper les kick de forage.
1.1 Les 5 piliers fondamentaux
Données Features Étiquettes Modèle Généralisation
1.2 Les données
Les données sont la matière première du machine learning. Elles peuvent être :
— Structurées : tableaux (Excel, CSV, bases de données SQL)
— Non structurées : textes, images, vidéos, sons
Dataset Oil & Gas typique : Journal de forage avec profondeur, taux de péné-
tration, pression en fond, densité de boue, etc.
1.3 Les features (caractéristiques)
Ce sont les variables d’entrée utilisées pour faire des prédictions. On les note géné-
ralement X.
Feature Type Exemple Description
Profondeur (m) Numérique 2500 Profondeur du forage
Taux pénétration (m/h) Numérique 12 ROP (Rate of Penetration)
Pression fond (psi) Numérique 4500 Pression en fond de trou
Densité boue (ppg) Numérique 12.5 Mud weight
Formation Catégoriel "Calcaire" Type de roche traversée
Table 1 – Exemples de features en forage pétrolier
3 / 14
Machine Learning - Oil & Gas 7 mai 2026
1.4 Les étiquettes (labels)
C’est ce qu’on cherche à prédire. On les note généralement y.
— Classification binaire : y ∈ {0, 1} (ex : kick = oui/non, panne = oui/non)
— Classification multi-classe : y ∈ {1, 2, 3} (ex : type de formation rocheuse)
— Régression : y ∈ R (ex : débit de pétrole en barils/jour)
1.5 Le modèle
Un modèle est une fonction mathématique f qui transforme les features en prédic-
tion :
ŷ = f (X)
1.6 La généralisation
La généralisation est la capacité d’un modèle à bien performer sur des données
invisibles (non utilisées pendant l’entraînement).
Attention aux pièges !
— Underfitting : modèle trop simple → mauvais partout
— Overfitting : modèle trop complexe → excellent sur les données d’entraîne-
ment, médiocre sur les nouvelles données
2 Phases d’un pipeline d’apprentissage
2.1 Visualisation du pipeline
Données brutes (logs de forage)
Nettoyage & Normalisation
Entraînement (60%) Division des données Validation (20%)
Test (20%)
4 / 14
Machine Learning - Oil & Gas 7 mai 2026
2.2 Les 3 phases essentielles
1. Entraînement (Training) : 60-70% des données. Le modèle apprend à partir
des exemples.
2. Validation : 15-20% des données. Ajustement des hyperparamètres, préven-
tion de l’overfitting.
3. Test : 15-20% des données. Évaluation finale de la généralisation.
3 Types d’apprentissage
Machine Learning
Supervisé
Non Supervisé
Renforcement
Régression
Clustering
Classification Agent
RéductionEnvironnement
dim.
3.1 Apprentissage supervisé
On dispose des étiquettes (exemples corrigés).
Tâche Exemple Oil & Gas Algorithmes
Classification "Détection de kick (influx de gaz) ?" KNN, SVM, Arbre
Régression "Prédiction du débit de pétrole (bbl/j)" Régression linéaire, RF
3.2 Apprentissage non supervisé
Pas d’étiquettes → on cherche des structures cachées.
3.3 Apprentissage par renforcement
L’agent apprend par essais-erreurs avec récompenses.
Exemples Oil & Gas :
— Optimisation du paramétrage de forage
— Contrôle automatique de vanne de sécurité
— Gestion de production offshore
4 Apprentissage non supervisé - Clustering
5 / 14
Machine Learning - Oil & Gas 7 mai 2026
4.1 Définition
Le clustering (ou partitionnement de données) est une technique qui regroupe des
points similaires entre eux, et dissimilaires des points des autres groupes.
4.2 Applications courantes en Oil & Gas
Segmentation puits Détection d’anomalies (kick)
Classification faciès Regroupement zones production
5 Algorithmes de clustering
5.1 K-means
5.1.1 Principe en 5 étapes
1. Choisir K = nombre de clusters
2. Placer K centroïdes aléatoirement
3. Assigner chaque point au centroïde le plus proche
4. Déplacer chaque centroïde au centre de son cluster
5. Répéter 3-4 jusqu’à convergence
5.1.2 Code K-means
from sklearn . cluster import KMeans
# C r a t i o n du m o d l e ( K =3 clusters )
kmeans = KMeans ( n_clusters =3 , random_state =42)
# Entra nement
clusters = kmeans . fit_predict ( X )
# R c u p r e r les centres
centres = kmeans . cluster_centers_
print (f" Centres des clusters :\ n { centres } " )
5.2 DBSCAN
5.2.1 Principe
DBSCAN utilise la densité plutôt que la distance aux centres.
6 / 14
Machine Learning - Oil & Gas 7 mai 2026
5.2.2 Code DBSCAN
from sklearn . cluster import DBSCAN
# eps = 0.5 , min_samples = 5
dbscan = DBSCAN ( eps =0.5 , min_samples =5)
clusters = dbscan . fit_predict ( X )
# Attention : cluster = -1 signifie " point i s o l / bruit "
5.3 Comparaison K-means vs DBSCAN
Critère K-means DBSCAN
Forme des clusters Sphérique Arbitraire
Gère le bruit Non Oui
Choix nb clusters À spécifier Automatique
Sensible aux outliers Oui Non
6 Visualisation et interprétation
6.1 Réduction de dimension avec PCA
from sklearn . decomposition import PCA
import matplotlib . pyplot as plt
# R duction 2 dimensions
pca = PCA ( n_components =2)
X_2d = pca . fit_transform ( X )
# Affichage
plt . figure ( figsize =(10 , 6) )
scatter = plt . scatter ( X_2d [: , 0] , X_2d [: , 1] , c = clusters ,
cmap = ’ viridis ’)
plt . colorbar ( scatter , label = ’ Cluster ’)
plt . xlabel ( ’ P r e m i r e composante principale ’)
plt . ylabel ( ’ D e u x i m e composante principale ’)
plt . title ( ’ Visualisation des clusters - P t r o l e & Gaz ’)
plt . show ()
7 Exercices corrigés - Contexte Oil & Gas
7.1 Exercice 1 : Identifier les composantes - Forage
Énoncé : Pour une application de prédiction de kick (influx de gaz dangereux) lors
du forage, identifiez :
7 / 14
Machine Learning - Oil & Gas 7 mai 2026
a) Les données
b) Les features
c) Le label
d) Le type d’apprentissage
Corrigé :
— Données : Historique des forages avec incidents de kick
— Features : profondeur, ROP (taux pénétration), pression fond, densité boue, débit
boue retour, température fond, type de formation
— Label : Kick = 1 (présence) / 0 (absence)
— Type : Supervisé - Classification binaire
Pourquoi c’est important ? Un kick non détecté peut causer un blowout (éruption
incontrôlée) avec conséquences humaines et environnementales graves.
7.2 Exercice 2 : Choisir l’algorithme - Production
Énoncé : Pour chaque cas en production pétrolière, choisissez entre K-means et DBS-
CAN :
a) Regrouper 500 puits selon leur courbe de déclin de production (formes sphériques)
b) Détecter des opérations de maintenance anormales (5% des données aberrantes)
c) Identifier des zones de production dans un gisement avec forme de "rivière"
Corrigé :
a) K-means (clusters sphériques, puits similaires)
b) DBSCAN (gère le bruit des anomalies)
c) DBSCAN (formes non sphériques, géologie complexe)
7.3 Exercice 3 : Clustering des formations géologiques
Énoncé : Vous disposez de données de diagraphie (logging) pour 1000 mètres de
forage. Les features sont : résistivité (Ohm.m), densité (g/cc), porosité neutron (%). Faites
un clustering pour identifier les différentes formations rocheuses.
import numpy as np
import pandas as pd
from sklearn . cluster import KMeans
from sklearn . preprocessing import StandardScaler
import matplotlib . pyplot as plt
# D o n n e s s i m u l e s ( diagraphie )
np . random . seed (42)
n_samples = 1000
# 3 formations g o l o g i q u e s d i f f r e n t e s
8 / 14
Machine Learning - Oil & Gas 7 mai 2026
formation1 = np . random . normal ([100 , 2.5 , 15] , [20 , 0.2 , 3] , (333 ,
3) ) # Sable
formation2 = np . random . normal ([500 , 2.2 , 8] , [50 , 0.15 , 2] , (333 ,
3) ) # Calcaire
formation3 = np . random . normal ([20 , 2.7 , 2] , [10 , 0.1 , 1] , (334 , 3) )
# Argile
X = np . vstack ([ formation1 , formation2 , formation3 ])
# Normalisation
scaler = StandardScaler ()
X_scaled = scaler . fit_transform ( X )
# M t h o d e du coude pour trouver K optimal
inerties = []
K_range = range (1 , 8)
for k in K_range :
kmeans = KMeans ( n_clusters =k , random_state =42)
kmeans . fit ( X_scaled )
inerties . append ( kmeans . inertia_ )
plt . plot ( K_range , inerties , ’bo - ’)
plt . xlabel ( ’ Nombre de clusters ( K ) ’)
plt . ylabel ( ’ Inertie ’)
plt . title ( ’ M t h o d e du coude - Diagraphie ’)
plt . show ()
# Le coude est K =3 (3 formations )
# Application avec K =3
kmeans = KMeans ( n_clusters =3 , random_state =42)
clusters = kmeans . fit_predict ( X_scaled )
# Visualisation
plt . figure ( figsize =(10 , 6) )
scatter = plt . scatter ( X_scaled [: , 0] , X_scaled [: , 1] , c = clusters ,
cmap = ’ viridis ’)
plt . scatter ( kmeans . cluster_centers_ [: , 0] ,
kmeans . cluster_centers_ [: , 1] ,
s =200 , c = ’ red ’ , marker = ’X ’ , label = ’ C e n t r o d e s ’)
plt . xlabel ( ’ R s i s t i v i t ( n o r m a l i s e ) ’)
plt . ylabel ( ’ D e n s i t ( n o r m a l i s e ) ’)
plt . title ( ’ Clustering des formations g o l o g i q u e s ’)
plt . legend ()
plt . colorbar ( scatter , label = ’ Formation ’)
plt . show ()
# Interpr tation
df = pd . DataFrame (X , columns =[ ’ Resistivite ’ , ’ Densite ’ ,
’ Porosite_neutron ’ ])
df [ ’ cluster ’] = clusters
print ( df . groupby ( ’ cluster ’) . mean () )
9 / 14
Machine Learning - Oil & Gas 7 mai 2026
Interprétation des résultats :
— Cluster 0 : Haute résistivité, densité moyenne → Calcaire
— Cluster 1 : Faible résistivité, haute densité → Argile
— Cluster 2 : Résistivité moyenne, densité basse → Sable réservoir
7.4 Exercice 4 : Détection d’anomalies sur tête de puits
Énoncé : Utilisez DBSCAN pour détecter des comportements anormaux sur une tête
de puits de production.
from sklearn . cluster import DBSCAN
import numpy as np
import matplotlib . pyplot as plt
# D o n n e s normales de production
np . random . seed (42)
n_normal = 200
pression_norm = np . random . normal (250 , 20 , n_normal ) # pression
en bar
debit_norm = np . random . normal (500 , 50 , n_normal ) # d bit
m3 /j
X_normal = np . column_stack ([ pression_norm , debit_norm ])
# Anomalies ( bouchage , rosion , etc .)
n_anomalies = 15
pression_anom = np . random . uniform (100 , 400 , n_anomalies )
debit_anom = np . random . uniform (0 , 1000 , n_anomalies )
X_anom = np . column_stack ([ pression_anom , debit_anom ])
X_total = np . vstack ([ X_normal , X_anom ])
# DBSCAN
dbscan = DBSCAN ( eps =15 , min_samples =10)
clusters = dbscan . fit_predict ( X_total )
# R sultats
n_bruit = np . sum ( clusters == -1)
print (f" Points normaux : { len ( X_normal ) } " )
print (f" Anomalies d t e c t e s : { n_bruit } " )
# Visualisation
plt . figure ( figsize =(10 , 6) )
plt . scatter ( X_total [ clusters != -1 , 0] , X_total [ clusters != -1 , 1] ,
c = ’ blue ’ , alpha =0.6 , label = ’ Normal ’)
plt . scatter ( X_total [ clusters == -1 , 0] , X_total [ clusters == -1 , 1] ,
c = ’ red ’ , s =100 , marker = ’X ’ , label = ’ Anomalie d t e c t e ’)
plt . xlabel ( ’ Pression t t e puits ( bar ) ’)
plt . ylabel ( ’ D b i t ( m / j ) ’)
plt . title ( ’ D t e c t i o n d \ ’ anomalies - T t e de puits ( DBSCAN ) ’)
plt . legend ()
plt . grid ( True , alpha =0.3)
10 / 14
Machine Learning - Oil & Gas 7 mai 2026
plt . show ()
7.5 Exercice 5 : Segmentation de puits pour optimisation de pro-
duction
Énoncé : Un champ pétrolier a 500 puits. Vous disposez des données suivantes par
puits : profondeur totale (m), débit initial (bbl/j), taux d’eau (%), temps de production
(années). Groupez les puits pour définir des stratégies de production adaptées.
import pandas as pd
import numpy as np
from sklearn . cluster import KMeans
from sklearn . preprocessing import StandardScaler
import matplotlib . pyplot as plt
# Simulation des d o n n e s
np . random . seed (42)
n_puits = 500
puits_data = pd . DataFrame ({
’ profondeur ’: np . random . choice ([1500 , 2200 , 3100 , 4500] ,
n_puits ) ,
’ debit_initial ’: np . random . exponential (800 , n_puits ) ,
’ taux_eau ’: np . random . beta (2 , 5 , n_puits ) * 100 ,
’ age_production ’: np . random . uniform (0.5 , 25 , n_puits )
})
# Normalisation
scaler = StandardScaler ()
X_scaled = scaler . fit_transform ( puits_data )
# Clustering avec K =4
kmeans = KMeans ( n_clusters =4 , random_state =42)
puits_data [ ’ cluster ’] = kmeans . fit_predict ( X_scaled )
# Analyse des clusters
for i in range (4) :
cluster = puits_data [ puits_data [ ’ cluster ’] == i ]
print ( f " \ n === Cluster { i } : { len ( cluster ) } puits === " )
print ( f " Profondeur moyenne : { cluster [ ’ profondeur ’]. mean () :.0 f }
m" )
print ( f " D b i t initial moyen :
{ cluster [ ’ debit_initial ’]. mean () :.0 f } bbl / j " )
print ( f " Taux eau moyen : { cluster [ ’ taux_eau ’]. mean () :.1 f }% " )
print ( f " ge moyen : { cluster [ ’ age_production ’]. mean () :.1 f }
ans " )
# Recommandations
print ("\n " + " = " *50)
print (" RECOMMANDATIONS S T R A T G I Q U E S " )
11 / 14
Machine Learning - Oil & Gas 7 mai 2026
print ("=" *50)
print (" Cluster 0 Puits jeunes haut d b i t Maintenir
production " )
print (" Cluster 1 Puits vieux haut taux eau tudier abandon
ou EOR " )
print (" Cluster 2 Puits profonds Surveillance haute pression " )
print (" Cluster 3 Puits m a t u r i t moyenne Optimiser lift " )
7.6 Exercice 6 : Application réelle - Prédiction d’usure de trépan
Énoncé : Expliquez comment construire un modèle supervisé pour prédire l’usure
d’un trépan de forage.
Corrigé :
1. Collecte des données : Historique des forages avec :
— Features : ROP, poids sur l’outil (WOB), vitesse rotation (RPM), couple, débit
boue, type de formation, heures de forage cumulées
— Label : usure trépan (% ou niveau 1-8 selon IADC)
2. Prétraitement : Nettoyage, normalisation, suppression outliers
3. Modèle : Régression (valeur continue) ou classification (niveaux)
4. Application :
from sklearn . ensemble import RandomForestRegressor
from sklearn . model_selection import train_test_split
X = df [[ ’ ROP ’ , ’ WOB ’ , ’ RPM ’ , ’ couple ’ , ’ debit_boue ’ , ’ heures ’ ]]
y = df [ ’ usure_trepan ’]
X_train , X_test , y_train , y_test = train_test_split (X , y ,
test_size =0.2)
model = RandomForestRegressor ( n_estimators =100)
model . fit ( X_train , y_train )
predictions = model . predict ( X_test )
5. Bénéfice métier : Le modèle permet de programmer le changement de trépan
avant casse, réduisant les coûts de 15-30%.
7.7 Exercice 7 : Interprétation pédagogique pour un ingénieur
pétrolier
Question : Expliquez le clustering à un ingénieur de production.
Corrigé type :
"Ingénieur, vous avez 200 puits sur votre champ. Chaque puits a des caracté-
ristiques (profondeur, débit, pression, taux d’eau). Le clustering, c’est comme
classifier automatiquement ces puits en familles. L’ordinateur va regrouper les
puits qui se ressemblent sans que vous lui disiez combien de groupes chercher.
À la fin, vous allez voir des groupes naturels : les puits jeunes à haut débit,
12 / 14
Machine Learning - Oil & Gas 7 mai 2026
les puits vieux avec forte eau, les puits profonds, etc. Chaque groupe aura une
stratégie de production différente. C’est un outil d’aide à la décision, pas un
remplacement de votre expertise."
8 Résumé visuel - Applications Oil & Gas
Machine Learning
Supervisé Non Supervisé
ClassificationDétection kickPanne pompe
ClusteringFaciès géologiquesSegmentation puits
Table 2 – Applications concrètes par domaine
Domaine Application Type ML
Forage Prédiction de kick Classification supervisée
Forage Usure trépan Régression
Production Optimisation lift Renforcement
Production Détection bouchage Anomalies (DBSCAN)
Géologie Classification faciès Clustering (K-means)
Géologie Corrélation puits Réduction dimension
9 Glossaire spécifique Oil & Gas
Terme Définition
Kick Entrée de fluide formation (gaz/oil) dans le puits, risque
d’éruption
ROP (Rate of Taux de pénétration du trépan (m/h)
Penetration)
WOB (Weight Poids appliqué sur l’outil de forage
On Bit)
Diagraphie Enregistrement continu des propriétés des formations
Faciès Ensemble de caractéristiques d’une formation rocheuse
EOR (Enhanced Techniques de récupération assistée du pétrole
Oil Recovery)
BOP (Blowout Système de sécurité anti-éruption
Preventer)
10 Ressources complémentaires
— Scikit-learn : bibliothèque Python - [Link]
13 / 14
Machine Learning - Oil & Gas 7 mai 2026
— SPE : Society of Petroleum Engineers - articles sur ML
— OnePetro : base de données techniques Oil & Gas
— Kaggle : compétitions (SPE Data-Driven Drilling)
Merci pour votre attention !
Application du Machine Learning dans l’industrie Pétrole & Gaz
"Data is the new oil" - Clive Humby
Image
Document créé avec LATEX- 7 mai 2026- Spécial Oil & Gas
14 / 14