Maison >développement back-end >Tutoriel Python >Exemple de régression lasso en Python
La régression Lasso est une méthode de régression linéaire populaire utilisée dans l'apprentissage automatique, qui vise à trouver le modèle le mieux adapté en ignorant les variables de caractéristiques non pertinentes. Cet article présentera comment implémenter la régression Lasso en Python et fournira un ensemble de données réelles à des fins de démonstration.
Introduction à la régression Lasso
La régression Lasso est une méthode de résolution de problèmes de moindres carrés ordinaires en ajoutant un terme de pénalité à la fonction objectif. Ce terme de pénalité est implémenté à l'aide de la régularisation L1 (également appelée pénalité Lasso), et sa forme est la suivante :
$J(eta)= rac{1}{2n}sum_{i=1}^{n}( y_i- sum_{j=1}^{p}X_{ij} eta_j)^2 + lpha sum_{j=1}^{p}| eta_j|$
où, $y$ est la variable de réponse, $X$ est la matrice de variables indépendantes, $eta$ est le coefficient du modèle, $n$ est le nombre d'échantillons, $p$ est le nombre de caractéristiques et $lpha$ est le paramètre de pénalité. La partie difficile de la régression Lasso est le problème d’optimisation non convexe du terme de pénalité.
Une façon d'implémenter la régression Lasso est de la résoudre via l'algorithme de descente de coordonnées (CD). L’idée de base est qu’à chaque itération, un seul coefficient est modifié. De cette manière, l’algorithme CD contourne intelligemment le problème d’optimisation non convexe du terme de pénalité.
Implémentation de la régression Python Lasso
Python fournit de nombreuses bibliothèques d'apprentissage automatique, telles que Scikit-learn, qui peuvent facilement implémenter la régression Lasso.
Tout d'abord, importez les bibliothèques requises comme suit :
import numpy as np import pandas as pd from sklearn.linear_model import LassoCV from sklearn.datasets import load_boston from sklearn.preprocessing import StandardScaler
Ensuite, nous chargeons l'ensemble de données sur les prix des logements à Boston et le normalisons :
boston = load_boston() X = boston.data y = boston.target X = StandardScaler().fit_transform(X)
Ensuite, nous implémentons la régression Lasso à l'aide de LassoCV dans Scikit-learn. Le modèle effectue automatiquement une validation croisée et sélectionne la valeur $lpha$ optimale.
lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000) lasso_reg.fit(X, y)
Enfin, nous générons la valeur $lpha$ optimale résultante et les coefficients du modèle :
print('Best alpha:', lasso_reg.alpha_) print('Model coefficients:', lasso_reg.coef_)
Exemple de code complet :
import numpy as np import pandas as pd from sklearn.linear_model import LassoCV from sklearn.datasets import load_boston from sklearn.preprocessing import StandardScaler boston = load_boston() X = boston.data y = boston.target X = StandardScaler().fit_transform(X) lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000) lasso_reg.fit(X, y) print('Best alpha:', lasso_reg.alpha_) print('Model coefficients:', lasso_reg.coef_)
Le résultat est le suivant :
Best alpha: 0.10000000000000002 Model coefficients: [-0.89521162 1.08556604 0.14359222 0.68736347 -2.04113155 2.67946138 0.01939491 -3.08179223 2.63754058 -2.05806301 -2.05202597 0.89812875 -3.73066641]
Cela montre que grâce à la régression Lasso, nous pouvons déterminer la précision de Boston Le meilleur modèle pour prédire les prix de l'immobilier et extraire les caractéristiques les plus pertinentes pour la variable de réponse.
Conclusion
Cet article présente comment implémenter la régression Lasso en Python et démontre l'application de cette méthode à travers un ensemble de données réel. La régression lasso est une technique de régression linéaire très utile, particulièrement adaptée au traitement de données de grande dimension. Dans des problèmes pratiques, des techniques telles que la validation croisée et la standardisation peuvent être utilisées pour optimiser les performances du modèle et extraire les fonctionnalités les plus pertinentes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!