Letztes Mal Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (5) https://github.com/legacyworld/sklearn-basic
Kommentar auf Youtube: 5. (1) Pro 15 Minuten 50 Sekunden Es ist fast dasselbe wie in Übung 4.1, aber dieses Mal ist es ein Problem, den Regularisierungsparameter größer zu schütteln ($ 10 ^ {-3} ~ 10 ^ {6} $) und die Auswirkung auf jeden Koeffizienten zu sehen. Ich denke, es ist eine gute Aufgabe, weil man den Unterschied zwischen Ridge und Lasso deutlich sehen kann. Dies ist der Quellcode.
python:Homework_4.2.py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
from sklearn import preprocessing
#scikit-Importieren Sie Weindaten aus Lean
df= pd.read_csv('winequality-red.csv',sep=';')
#Da die Zielwertqualität enthalten ist, erstellen Sie einen abgelegten Datenrahmen
df1 = df.drop(columns='quality')
y = df['quality'].values.reshape(-1,1)
scaler = preprocessing.StandardScaler()
#Regularisierungsparameter
alpha = 10 ** (-4)
X = df1.values
X_fit = scaler.fit_transform(X)
#DataFrame zum Speichern von Ergebnissen
df_ridge = pd.DataFrame(columns=np.append(df1.columns,'alpha'))
df_lasso = pd.DataFrame(columns=np.append(df1.columns,'alpha'))
while alpha <= 10 ** 6 + 1:
#Ridge kehrt zurück
model_ridge = linear_model.Ridge(alpha=alpha)
model_ridge.fit(X_fit,y)
tmp_se = pd.Series(np.append(model_ridge.coef_[0],alpha),index=df_ridge.columns)
df_ridge = df_ridge.append(tmp_se,ignore_index=True)
#Lasso kehrt zurück
model_lasso = linear_model.Lasso(alpha=alpha)
model_lasso.fit(X_fit,y)
tmp_se = pd.Series(np.append(model_lasso.coef_,alpha),index=df_lasso.columns)
df_lasso = df_lasso.append(tmp_se,ignore_index=True)
alpha = alpha * 10 ** (0.1)
for column in df_ridge.drop(columns = 'alpha'):
plt.plot(df_ridge['alpha'],df_ridge[column])
plt.xscale('log')
plt.gca().invert_xaxis()
plt.savefig("ridge.png ")
plt.clf()
for column in df_lasso.drop(columns = 'alpha'):
plt.plot(df_lasso['alpha'],df_lasso[column])
plt.xscale('log')
plt.gca().invert_xaxis()
plt.savefig("lasso.png ")
Übrigens, während Alpha <= 10 ** 6 + 1: + 1
ist, weil die letzten $ 10 ^ {6} $ nicht ohne sie ausgeführt werden.
Ich denke, das liegt daran, dass es mit "alpha = alpha * 10 ** (0.1)" graviert ist.
Dieses Mal habe ich beim Zeichnen zwei Änderungen vorgenommen.
Machen Sie nur die X-Achse logarithmisch (quadratisch logarithmisch) plt.xscale ('log')
und kehren Sie die X-Achse (auf der rechten Seite kleiner) plt.gca () um. Invert_xaxis ()
Ridge Return (links) Lasso Return (rechts)
Es gibt einen deutlichen Unterschied zwischen Ridge, wo die Regularisierung allmählich funktioniert, und Lasso, das von dem mit dem kleineren Koeffizienten gegen 0 konvergiert. (Das Problem war von $ 10 ^ {-3} $, aber ich habe es geändert, weil die Gratregression in der Erklärung von $ 10 ^ {-2} $ gezogen wurde.)
Sowohl für Ridge als auch für Lasso sehen wir ein Muster, bei dem der Absolutwert des Koeffizienten zunimmt, während der Regularisierungsparameter zunimmt. Die folgende Grafik wird gezeichnet, indem nur die beweglichen Features extrahiert werden. Der Grat scheint sich stark zu bewegen, aber die Y-Achsen-Skala ist nur zehnmal unterschiedlich. Ich weiß nicht, ob es sich um eine Bewegung handelt, bei der der Koeffizient einer bestimmten Merkmalsmenge kleiner wird, was bis dahin nicht wahrnehmbar war. Ich dachte nicht, dass es eine solche Bewegung gibt, also war maschinelles Lernen eine gute Aufgabe, die mich denken ließ, dass es nicht einfach war.
Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (1) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (2) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (3) Kurs für maschinelles Lernen an der Tsukuba University: Lernen Sie sklearn, während Sie das Python-Skript in die Aufgabe aufnehmen (4)
Recommended Posts