2. Analyse multivariée décrite dans Python 6-3. Régression Ridge / Régression Lasso (scikit-learn) [Fonctionnement de la régularisation]

⑴ Bibliothèque d'importation

#Bibliothèque de traitement / calcul / analyse de données
import numpy as np
import pandas as pd

#Bibliothèque de dessins graphiques
import matplotlib.pyplot as plt
%matplotlib inline

#Bibliothèque d'apprentissage automatique
import sklearn
from sklearn.linear_model import Ridge, Lasso #Classe pour la génération de modèles de régression
#Un module qui rend matplotlib compatible avec l'affichage japonais
!pip install japanize-matplotlib
import japanize_matplotlib

⑵ Acquisition et lecture de données

#Obtenez des données
url = 'https://raw.githubusercontent.com/yumi-ito/sample_data/master/ridge_lasso_50variables.csv'

#Lire les données acquises en tant qu'objet DataFrame
df = pd.read_csv(url)

print(df)

2_6_3_01.PNG

#Créez la variable explicative x en supprimant la colonne "y"
x = df.drop('y', axis=1)

#Extraire la colonne "y" pour créer la variable objectif y
y = df['y']

(3) Génération du paramètre de régularisation λ

# λ(alpha)Générer 50 façons
num_alphas = 50
alphas = np.logspace(-2, 0.7, num_alphas)

print(alphas)

2_6_3_02.PNG

np.log10(alphas)

2_6_3_03.PNG

Échelle logistique

2_6_3_09.PNG

⑷ Estimation par régression des crêtes

#Variable qui stocke le coefficient de régression
ridge_coefs = []

#Répétez l'estimation de la régression des crêtes en échangeant alpha
for a in alphas:
    ridge = Ridge(alpha = a, fit_intercept = False)
    ridge.fit(x, y)
    ridge_coefs.append(ridge.coef_)
#Convertir les coefficients de régression accumulés en un tableau numpy
ridge_coefs = np.array(ridge_coefs)

print("Forme d'arrangement:", ridge_coefs.shape)
print(ridge_coefs)

2_6_3_05.PNG

#Conversion de journal des alphas(-log10)
log_alphas = -np.log10(alphas)

#Spécifier la taille de la zone graphique
plt.figure(figsize = (8,6))

#Un graphique en traits pointillés avec λ sur l'axe des x et des coefficients sur l'axe des y
plt.plot(log_alphas, ridge_coefs)

#Variable explicative x_Afficher 1
plt.text(max(log_alphas) + 0.1, np.array(ridge_coefs)[0,0], "x_1", fontsize=13)

#Spécifiez la plage de l'axe x
plt.xlim([min(log_alphas) - 0.1, max(log_alphas) + 0.3])

#Étiquette d'axe
plt.xlabel("Paramètre de régularisation λ(-log10)", fontsize=13)
plt.ylabel("Coefficient de régression", fontsize=13)

#Ligne d'échelle
plt.grid()

2_6_3_06.PNG

⑸ Estimation par régression Lasso

#Variable qui stocke le coefficient de régression
lasso_coefs = []

#Répétez l'estimation de la régression Lasso en échangeant alpha
for a in alphas:
    lasso = Lasso(alpha = a, fit_intercept = False)
    lasso.fit(x, y)
    lasso_coefs.append(lasso.coef_)
#Convertir les coefficients de régression accumulés en un tableau numpy
lasso_coefs = np.array(lasso_coefs)

print("Forme d'arrangement:", lasso_coefs.shape)
print(lasso_coefs)

2_6_3_07.PNG

#Spécifier la taille de la zone graphique
plt.figure(figsize = (8,6))

#Un graphique en traits pointillés avec λ sur l'axe des x et des coefficients sur l'axe des y
plt.plot(log_alphas, lasso_coefs)

#Variable explicative x_Afficher 1
plt.text(max(log_alphas) + 0.1, np.array(lasso_coefs)[0,0], "x_1", fontsize=13)

#Spécifiez la plage de l'axe x
plt.xlim([min(log_alphas) - 0.1, max(log_alphas) + 0.3])

#Étiquette d'axe
plt.xlabel("Paramètre de régularisation λ(-log10)", fontsize=13)
plt.ylabel("Coefficient de régression", fontsize=13)

#Ligne d'échelle
plt.grid()

2_6_3_08.PNG

Résumé

Recommended Posts

2. Analyse multivariée décrite dans Python 6-3. Régression Ridge / Régression Lasso (scikit-learn) [Fonctionnement de la régularisation]
2. Analyse multivariée définie dans Python 6-2. Régression Ridge / Régression Lasso (scikit-learn) [Régression Ridge vs régression Lasso]
2. Analyse multivariée décrite dans Python 6-1. Régression de crête / Régression de lasso (scikit-learn) [régression multiple vs régression de crête]
2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)
2. Analyse multivariée décrite dans Python 2-1. Analyse de régression multiple (scikit-learn)
2. Analyse multivariée expliquée dans Python 7-3. Arbre de décision [arbre de retour]
2. Analyse multivariée décrite dans Python 7-1. Arbre de décision (scikit-learn)
2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
2. Analyse multivariée expliquée dans Python 8-1. Méthode de voisinage k (scikit-learn)
2. Analyse multivariée expliquée dans Python 5-3. Analyse de régression logistique (modèles statistiques)
2. Analyse multivariée détaillée dans Python 2-3. Analyse de régression multiple [taux d’infection au COVID-19]
2. Analyse multivariée expliquée dans Python 8-2. Méthode de voisinage k [méthode de pondération] [modèle de retour]
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
2. Analyse multivariée énoncée dans Python 8-3. Méthode de voisinage K [vérification d'intersection]
2. Analyse multivariée expliquée dans Python 7-2. Arbre de décision [différence de critères de division]
Analyse de régression avec Python
Analyse de régression simple avec Python
Première analyse de régression simple en Python
Régression linéaire en Python (statmodels, scikit-learn, PyMC3)
Analyse de régression LASSO facile avec Python (pas de théorie)
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Analyse d'association en Python