La régression

La régression est une technique de machine learning utilisée pour prédire une variable continue (ou une valeur) en fonction d'une ou plusieurs variables indépendantes.

Types de régression

  • Régression linéaire simple
  • Régression linéaire multiple
  • Régression polynomiale

Variables dépendantes et indépendantes

Variable dépendante (Y) : la variable que nous voulons prédire.

Variable indépendante (X) : la variable utilisée pour faire la prédiction.

Régression linéaire simple

La régression linéaire simple modélise la relation entre une variable indépendante (X) et une variable dépendante (Y) en ajustant une ligne droite aux données.

Exemple simple : prédire le prix d'une maison en fonction de sa superficie.

Régression linéaire multiple

La régression linéaire multiple modélise la relation entre plusieurs variables indépendantes (X1, X2, ...) et une variable dépendante (Y) en ajustant un hyperplan aux données.

Exemple : prédire le prix d'une maison en fonction de sa superficie, du nombre de pièces et de l'emplacement.

Régression polynomiale

La régression polynomiale modélise la relation entre une variable indépendante (X) et une variable dépendante (Y) en ajustant une courbe polynomiale aux données.

Une courbe polynomiale est une fonction mathématique qui peut être utilisée pour modéliser des relations non linéaires entre les variables.

En ajustant le degré du polynôme, on peut contrôler la complexité du modèle.

Exemple : prédire le prix d'une maison en fonction de sa superficie, en tenant compte de l'effet non linéaire de la superficie sur le prix.

Comment savoir si c'est linéaire ou non linéaire

Pour déterminer si une relation est linéaire ou non linéaire, on peut examiner le nuage de points des données ou utiliser des tests statistiques.

Simple : si les points semblent suivre une ligne droite, la relation est linéaire. Sinon, elle est non linéaire.

SciKit-Learn

SciKit-Learn est une bibliothèque Python pour l'apprentissage automatique. Elle fournit des outils pour la préparation des données, la modélisation et l'évaluation des modèles.

Régression linéaire


from sklearn.linear_model import LinearRegression
import numpy as np
# Données d'exemple
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 3, 5, 7, 11])
# Création du modèle de régression linéaire
model = LinearRegression()
# Entraînement du modèle
model.fit(X, y)
# Prédiction pour une nouvelle valeur
new_value = np.array([[6]])
predicted_value = model.predict(new_value)
print(f'La prédiction pour la valeur {new_value[0][0]} est : {predicted_value[0]}')
					

Dans cet exemple, nous avons utilisé la classe LinearRegression de scikit-learn pour créer un modèle de régression linéaire simple. Nous avons entraîné le modèle avec les données d'exemple et effectué une prédiction pour une nouvelle valeur (6). Enfin, nous avons affiché la prédiction dans la console.

Régression linéaire multiple


from sklearn.linear_model import LinearRegression
import numpy as np
# Données d'exemple
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([3, 5, 7, 9, 11])
# Création du modèle de régression linéaire
model = LinearRegression()
# Entraînement du modèle
model.fit(X, y)
# Prédiction
y_pred = model.predict([[6, 7]])
print(f'La prédiction pour les valeurs [6, 7] est : {y_pred[0]}')
					

Régression polynomiale


from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
import numpy as np
# Données d'exemple
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 8, 15, 24, 35])
# Transformation polynomiale des données
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
# Création du modèle de régression linéaire
model = LinearRegression()
# Entraînement du modèle
model.fit(X_poly, y)
# Prédiction pour une nouvelle valeur
new_value = np.array([[6]])
new_value_poly = poly.transform(new_value)
predicted_value = model.predict(new_value_poly)
print(f'La prédiction pour la valeur {new_value[0][0]} est : {predicted_value[0]}')
					

Matplotlib

Matplotlib est une bibliothèque Python pour la visualisation de données. Elle permet de créer des graphiques et des tracés pour représenter les résultats des modèles d'apprentissage automatique.

Affichage d'un graphique avec matplotlib


from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
# Données d'exemple
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 3, 5, 7, 11])
# Création du modèle de régression linéaire
model = LinearRegression()
# Entraînement du modèle
model.fit(X, y)
# Prédiction
y_pred = model.predict(X)
# Affichage des résultats
plt.scatter(X, y, color='blue', label='Données réelles')
plt.plot(X, y_pred, color='red', label='Prédiction')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Régression linéaire simple avec scikit-learn')
plt.legend()
plt.show()