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_6_2_01.PNG

** Ici, je voudrais comparer trois modèles de régression multiple, y compris la régression Lasso. ** **

⑴ 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

⑵ Acquisition et lecture de données

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

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

#Définir le libellé de la colonne
df.columns = ['width', 'height', 'horsepower', 'price']

print(df)

2_6_2_02.PNG

#Confirmation de la forme des données
print('Forme des données:', df.shape)

#Confirmation des valeurs manquantes
print('Nombre de valeurs manquantes:{}\n'.format(df.isnull().sum().sum()))

#Confirmation du type de données
print(df.dtypes)

2_6_2_03.PNG

(3) Division des données d'entraînement et des données d'essai

#Importer pour la construction de modèles
from sklearn.linear_model import Ridge, Lasso, LinearRegression

#Importer pour la division des données
from sklearn.model_selection import train_test_split
#Définir des variables explicatives et des variables objectives
x = df.drop('price', axis=1)
y = df['price']

#Divisé en données d'entraînement et données de test
X_train, X_test, Y_train, Y_test = train_test_split(x, y, test_size=0.5, random_state=0)

⑷ Génération et évaluation de modèles

#Initialisez chaque classe et stockez-la dans des modèles de variable de type dict
models = {
    'linear': LinearRegression(),
    'ridge': Ridge(random_state=0),
    'lasso': Lasso(random_state=0)}

#Initialisez la variable de type dict qui stocke le taux de réponse correct
scores = {}

#Générez chaque modèle en séquence, calculez et stockez le taux de réponse correct
for model_name, model in models.items():
    #Génération de modèle
    model.fit(X_train, Y_train)
    #Taux de réponse correct des données d'entraînement
    scores[(model_name, 'train')] = model.score(X_train, Y_train)
    #Taux de réponse correct des données de test
    scores[(model_name, 'test')] = model.score(X_test, Y_test)

#Convertir le type de dict en liste unidimensionnelle de pandas
print(pd.Series(scores))

2_6_2_04.PNG

Régression multiple Retour de crête Retour au lasso
Taux de réponse correct des données d'entraînement 0.733358 0.733355 0.733358
Taux de réponse correct des données de test 0.737069 0.737768 0.737084

** Donc, je voudrais changer les paramètres de régularisation et comparer. ** **

Paramètres de régularisation

2_6_2_05.PNG

#réglages des paramètres
alpha = 10.0

#Initialiser chaque classe et stocker dans des modèles
models = {
    'ridge': Ridge(alpha=alpha, random_state=0),
    'lasso': Lasso(alpha=alpha, random_state=0)}

#Initialisez la variable de type dict qui stocke le taux de réponse correct
scores = {}

#Exécutez chaque modèle en séquence et enregistrez le taux de réponse correct
for model_name, model in models.items():
    model.fit(X_train, Y_train)
    scores[(model_name, 'train')] = model.score(X_train, Y_train)
    scores[(model_name, 'test')] = model.score(X_test, Y_test)

print(pd.Series(scores))

2_6_2_06.PNG

λ Ridge(train) Ridge(test) Lasso(train) Lasso(test)
1 0.733355 0.737768 0.733358 0.737084
10 0.733100 0.743506 0.733357 0.737372
100 0.721015 0.771022 0.733289 0.740192
200 0.705228 0.778607 0.733083 0.743195
400 0.680726 0.779004 0.732259 0.748795
500 0.671349 0.777338 0.731640 0.751391
1000 0.640017 0.767504 0.726479 0.762336

Recommended Posts

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é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 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 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
Expression de régression multiple en Python
Analyse des contraintes symétriques axiales avec Python
[Python] Régression linéaire avec scicit-learn
Régression linéaire en ligne en Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (2)
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
Scikit-learn ne peut pas être installé en Python
Exécuter le module Python unittest dans vs2017
Analyse du squelette planaire dans Python (2) Hotfix
Implémentation simple de l'analyse de régression avec Keras
Analyse de régression logistique Self-made avec python