Dernière fois Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (5) https://github.com/legacyworld/sklearn-basic
Commentaire sur Youtube: 5e (1) Par 15 minutes 50 secondes C'est presque la même chose que l'exercice 4.1, mais cette fois, c'est un problème de secouer le paramètre de régularisation plus grand ($ 10 ^ {-3} ~ 10 ^ {6} $) et de voir l'effet sur chaque coefficient. Je pense que c'est une bonne tâche car vous pouvez clairement voir la différence entre Ridge et Lasso. Ceci est le code source.
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-Importer des données sur le vin à partir de lean
df= pd.read_csv('winequality-red.csv',sep=';')
#Puisque la qualité de la valeur cible est incluse, créez une trame de données supprimée
df1 = df.drop(columns='quality')
y = df['quality'].values.reshape(-1,1)
scaler = preprocessing.StandardScaler()
#Paramètres de régularisation
alpha = 10 ** (-4)
X = df1.values
X_fit = scaler.fit_transform(X)
#DataFrame pour stocker les résultats
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:
#Retour de crête
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)
#Retour au lasso
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 ")
À propos, while alpha <= 10 ** 6 + 1:
+ 1
est parce que le dernier $ 10 ^ {6} $ n'est pas exécuté sans lui.
Je pense que c'est parce qu'il est gravé avec ʻalpha = alpha * 10 ** (0,1) `.
Cette fois, j'ai apporté deux modifications lors du dessin.
Rendre uniquement l'axe X logarithmique (logarithmique carré) plt.xscale ('log')
et inverser l'axe X (petit côté droit) plt.gca (). Invert_xaxis ()
Retour de crête (à gauche) Retour de lasso (à droite)
Il existe une nette différence entre Ridge, où la régularisation est progressivement efficace, et Lasso, qui converge vers 0 par rapport à celui avec le coefficient le plus petit. (Le problème venait de $ 10 ^ {-3} $, mais je l'ai changé car la régression de crête dans l'explication a été tirée de $ 10 ^ {-2} $)
Pour Ridge et Lasso, nous pouvons voir un modèle dans lequel la valeur absolue du coefficient augmente tandis que le paramètre de régularisation augmente. Le graphique ci-dessous est dessiné en extrayant uniquement les entités qui bougent. La crête semble bouger beaucoup, mais l'échelle de l'axe Y n'est que 10 fois différente. Je ne sais pas si c'est un mouvement qui, lorsque le coefficient d'une certaine quantité de caractéristiques devient plus petit, quelque chose qui n'était pas perceptible jusque-là vient à la surface. Je ne pensais pas qu'il y avait un tel mouvement, donc l'apprentissage automatique était une bonne tâche qui m'a fait penser que ce n'était pas simple.
Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (1) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (2) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (3) Cours d'apprentissage automatique à l'Université de Tsukuba: étudier sklearn tout en intégrant le script Python au devoir (4)
Recommended Posts