2. Multivariate Analyse in Python 6-3. Ridge-Regression / Lasso-Regression (Scikit-Learn) [Funktionsweise der Regularisierung]

⑴ Bibliothek importieren

#Datenverarbeitungs- / Berechnungs- / Analysebibliothek
import numpy as np
import pandas as pd

#Grafikzeichnungsbibliothek
import matplotlib.pyplot as plt
%matplotlib inline

#Bibliothek für maschinelles Lernen
import sklearn
from sklearn.linear_model import Ridge, Lasso #Klasse zur Generierung von Regressionsmodellen
#Ein Modul, das matplotlib mit dem japanischen Display kompatibel macht
!pip install japanize-matplotlib
import japanize_matplotlib

⑵ Datenerfassung und Lesen

#Daten bekommen
url = 'https://raw.githubusercontent.com/yumi-ito/sample_data/master/ridge_lasso_50variables.csv'

#Lesen Sie die erfassten Daten als DataFrame-Objekt
df = pd.read_csv(url)

print(df)

2_6_3_01.PNG

#Erstellen Sie eine erklärende Variable x, indem Sie die Spalte "y" löschen
x = df.drop('y', axis=1)

#Extrahieren Sie die Spalte "y", um die Zielvariable y zu erstellen
y = df['y']

(3) Erzeugung des Regularisierungsparameters λ

# λ(alpha)Generieren Sie 50 Wege
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

Logistische Skala

2_6_3_09.PNG

⑷ Schätzung durch Gratregression

#Variable, die den Regressionskoeffizienten speichert
ridge_coefs = []

#Wiederholen Sie die Schätzung der Gratregression, während Sie Alpha austauschen
for a in alphas:
    ridge = Ridge(alpha = a, fit_intercept = False)
    ridge.fit(x, y)
    ridge_coefs.append(ridge.coef_)
#Konvertieren Sie die akkumulierten Regressionskoeffizienten in ein Numpy-Array
ridge_coefs = np.array(ridge_coefs)

print("Arrangementform:", ridge_coefs.shape)
print(ridge_coefs)

2_6_3_05.PNG

#Protokollkonvertierung von Alphas(-log10)
log_alphas = -np.log10(alphas)

#Festlegen der Größe des Diagrammbereichs
plt.figure(figsize = (8,6))

#Ein gestrichelter Liniendiagramm mit λ auf der x-Achse und Koeffizienten auf der y-Achse
plt.plot(log_alphas, ridge_coefs)

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

#Geben Sie den x-Achsenbereich an
plt.xlim([min(log_alphas) - 0.1, max(log_alphas) + 0.3])

#Achsenbeschriftung
plt.xlabel("Regularisierungsparameter λ(-log10)", fontsize=13)
plt.ylabel("Regressionskoeffizienten", fontsize=13)

#Linie skalieren
plt.grid()

2_6_3_06.PNG

⑸ Schätzung durch Lasso-Regression

#Variable, die den Regressionskoeffizienten speichert
lasso_coefs = []

#Wiederholen Sie die Schätzung der Lasso-Regression, während Sie Alpha austauschen
for a in alphas:
    lasso = Lasso(alpha = a, fit_intercept = False)
    lasso.fit(x, y)
    lasso_coefs.append(lasso.coef_)
#Konvertieren Sie die akkumulierten Regressionskoeffizienten in ein Numpy-Array
lasso_coefs = np.array(lasso_coefs)

print("Arrangementform:", lasso_coefs.shape)
print(lasso_coefs)

2_6_3_07.PNG

#Festlegen der Größe des Diagrammbereichs
plt.figure(figsize = (8,6))

#Ein gestrichelter Liniendiagramm mit λ auf der x-Achse und Koeffizienten auf der y-Achse
plt.plot(log_alphas, lasso_coefs)

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

#Geben Sie den x-Achsenbereich an
plt.xlim([min(log_alphas) - 0.1, max(log_alphas) + 0.3])

#Achsenbeschriftung
plt.xlabel("Regularisierungsparameter λ(-log10)", fontsize=13)
plt.ylabel("Regressionskoeffizienten", fontsize=13)

#Linie skalieren
plt.grid()

2_6_3_08.PNG

Zusammenfassung

Recommended Posts

2. Multivariate Analyse in Python 6-3. Ridge-Regression / Lasso-Regression (Scikit-Learn) [Funktionsweise der Regularisierung]
2. Multivariate Analyse in Python 6-2. Ridge-Regression / Lasso-Regression (Scikit-Learn) [Ridge-Regression vs. Lasso-Regression]
2. Multivariate Analyse in Python 6-1. Ridge-Regression / Lasso-Regression (Scikit-Learn) [multiple Regression vs. Ridge-Regression]
2. Multivariate Analyse in Python 1-1. Einfache Regressionsanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 2-1. Multiple Regressionsanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 7-3. Entscheidungsbaum [Rückgabebaum]
2. Multivariate Analyse in Python 7-1. Entscheidungsbaum (Scikit-Learn)
2. Multivariate Analyse in Python 1-2. Einfache Regressionsanalyse (Algorithmus)
2. Multivariate Analyse in Python 3-1. Hauptkomponentenanalyse (Scikit-Learn)
2. Multivariate Analyse in Python 8-1. K Nachbarschaftsmethode (Scikit-Learn)
2. Multivariate Analyse in Python 5-3. Logistische Regressionsanalyse (Statistikmodelle)
2. Multivariate Analyse in Python 2-3. Multiple Regressionsanalyse [COVID-19-Infektionsrate]
2. Multivariate Analyse in Python 8-2. K Nachbarschaftsmethode [Gewichtungsmethode] [Rückgabemodell]
2. Multivariate Analyse in Python 3-2. Hauptkomponentenanalyse (Algorithmus)
2. Multivariate Analyse in Python 8-3. K Nachbarschaftsmethode [Schnittstellenüberprüfung]
2. Multivariate Analyse in Python 7-2. Entscheidungsbaum [Unterschied in den Teilungskriterien]
Regressionsanalyse mit Python
Einfache Regressionsanalyse mit Python
Erste einfache Regressionsanalyse in Python
Lineare Regression in Python (Statmodelle, Scikit-Learn, PyMC3)
Einfache LASSO-Regressionsanalyse mit Python (keine Theorie)
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Assoziationsanalyse in Python