Introduction
Dans ce tutoriel, nous allons apprendre à connaître la régression Lasso et la régression Elastic Net, qui sont des techniques utilisées pour la régression linéaire et implémentées à l'aide d'une descente coordonnée. Nous allons apprendre à calculer les chemins de régularisation à l'aide de la Lasso et de l'Elastic Net, et à afficher les résultats à l'aide de matplotlib.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.
Charger l'ensemble de données
Dans cette étape, nous allons charger l'ensemble de données sur le diabète provenant de la bibliothèque scikit-learn et standardiser les données.
from sklearn import datasets
## Charger l'ensemble de données sur le diabète
X, y = datasets.load_diabetes(return_X_y=True)
## Standardiser les données
X /= X.std(axis=0)
Calculer le chemin de régularisation à l'aide de la Lasso
Dans cette étape, nous allons calculer le chemin de régularisation à l'aide de la technique Lasso et afficher les résultats à l'aide de matplotlib.
from sklearn.linear_model import lasso_path
import numpy as np
import matplotlib.pyplot as plt
## Définir la valeur de eps
eps = 5e-3
## Calculer le chemin de régularisation à l'aide de la Lasso
alphas_lasso, coefs_lasso, _ = lasso_path(X, y, eps=eps)
## Afficher les résultats à l'aide de matplotlib
plt.figure(1)
colors = cycle(["b", "r", "g", "c", "k"])
neg_log_alphas_lasso = -np.log10(alphas_lasso)
for coef_l, c in zip(coefs_lasso, colors):
l1 = plt.plot(neg_log_alphas_lasso, coef_l, c=c)
plt.xlabel("-Log(alpha)")
plt.ylabel("coefficients")
plt.title("Chemin de la Lasso")
plt.axis("tight")
plt.show()
Calculer le chemin de régularisation à l'aide de la Lasso positive
Dans cette étape, nous allons calculer le chemin de régularisation à l'aide de la technique de Lasso positive et afficher les résultats à l'aide de matplotlib.
## Calculer le chemin de régularisation à l'aide de la Lasso positive
alphas_positive_lasso, coefs_positive_lasso, _ = lasso_path(X, y, eps=eps, positive=True)
## Afficher les résultats à l'aide de matplotlib
plt.figure(2)
neg_log_alphas_positive_lasso = -np.log10(alphas_positive_lasso)
for coef_l, coef_pl, c in zip(coefs_lasso, coefs_positive_lasso, colors):
l1 = plt.plot(neg_log_alphas_lasso, coef_l, c=c)
l2 = plt.plot(neg_log_alphas_positive_lasso, coef_pl, linestyle="--", c=c)
plt.xlabel("-Log(alpha)")
plt.ylabel("coefficients")
plt.title("Lasso et Lasso positive")
plt.legend((l1[-1], l2[-1]), ("Lasso", "Lasso positive"), loc="lower left")
plt.axis("tight")
plt.show()
Calculer le chemin de régularisation à l'aide de l'Elastic Net
Dans cette étape, nous allons calculer le chemin de régularisation à l'aide de la technique Elastic Net et afficher les résultats à l'aide de matplotlib.
from sklearn.linear_model import enet_path
## Calculer le chemin de régularisation à l'aide de l'Elastic Net
alphas_enet, coefs_enet, _ = enet_path(X, y, eps=eps, l1_ratio=0.8)
## Afficher les résultats à l'aide de matplotlib
plt.figure(3)
neg_log_alphas_enet = -np.log10(alphas_enet)
for coef_e, c in zip(coefs_enet, colors):
l1 = plt.plot(neg_log_alphas_enet, coef_e, c=c)
plt.xlabel("-Log(alpha)")
plt.ylabel("coefficients")
plt.title("Chemin de l'Elastic Net")
plt.axis("tight")
plt.show()
Calculer le chemin de régularisation à l'aide de l'Elastic Net positif
Dans cette étape, nous allons calculer le chemin de régularisation à l'aide de la technique d'Elastic Net positif et afficher les résultats à l'aide de matplotlib.
## Calculer le chemin de régularisation à l'aide de l'Elastic Net positif
alphas_positive_enet, coefs_positive_enet, _ = enet_path(X, y, eps=eps, l1_ratio=0.8, positive=True)
## Afficher les résultats à l'aide de matplotlib
plt.figure(4)
neg_log_alphas_positive_enet = -np.log10(alphas_positive_enet)
for coef_e, coef_pe, c in zip(coefs_enet, coefs_positive_enet, colors):
l1 = plt.plot(neg_log_alphas_enet, coef_e, c=c)
l2 = plt.plot(neg_log_alphas_positive_enet, coef_pe, linestyle="--", c=c)
plt.xlabel("-Log(alpha)")
plt.ylabel("coefficients")
plt.title("Elastic Net et Elastic Net positif")
plt.legend((l1[-1], l2[-1]), ("Elastic Net", "Elastic Net positif"), loc="lower left")
plt.axis("tight")
plt.show()
Sommaire
Dans ce tutoriel, nous avons appris à propos de la Lasso et de l'Elastic Net, qui sont des techniques utilisées pour la régression linéaire. Nous avons appris à calculer les chemins de régularisation à l'aide de la Lasso et de l'Elastic Net, et à afficher les résultats à l'aide de matplotlib. Nous avons également appris à calculer le chemin de régularisation à l'aide des techniques de Lasso positive et d'Elastic Net positive.