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

⑴ 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.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 = ['symboling', 'normalized-losses', 'make', 'fuel-type', 'aspiration', 'num-of-doors', 'body-style', 'drive-wheels', 'engine-location', 'wheel-base', 
              'length', 'width', 'height', 'curb-weight', 'engine-type', 'num-of-cylinders', 'engine-size', 'fuel-system', 'bore', 'stroke', 
              'compression-ratio', 'horsepower', 'peak-rpm', 'city-mpg', 'highway-mpg', 'price']
Nom de variable Traduction gratuite Item (commentaire) Type de données
0 symboling Cote de risque d'assurance -3, -2, -1, 0, 1, 2, 3.(3 est un risque élevé et dangereux,-3 est à faible risque et sûr) int64
1 normalized-losses Perte de normalisation 65〜256 object
2 make Fabricant alfa-romero, audi, bmw, ..., volkswagen, volvo. object
3 fuel-type Type de carburant diesel, gas. object
4 aspiration Type d'admission std, turbo. object
5 num-of-doors Nombre de portes four, two. object
6 body-style Style corporel hardtop, wagon, sedan, hatchback, convertible. object
7 drive-wheels Roues motrices 4wd, fwd, rwd. object
8 engine-location Position du moteur front, rear. object
9 wheel-base Empattement 86.6~120.9 float64
10 length Le commandant 141.1~208.1 float64
11 width Largeur du véhicule 60.3~72.3 float64
12 height Hauteur du véhicule 47.8~59.8 float64
13 curb-weight Poids du véhicule sans pilote 1488~4066 int64
14 engine-type Type de moteur dohc, dohcv, l, ohc, ohcf, ohcv, rotor. object
15 num-of-cylinders Nombre de cylindres eight, five, four, six, three, twelve, two. object
16 engine-size La taille du moteur 61~326 int64
17 fuel-system Système de carburant 1bbl, 2bbl, 4bbl, idi, mfi, mpfi, spdi, spfi. object
18 bore Diamètre intérieur du cylindre moteur 2.54~3.94 object
19 stroke Quantité de mouvement du piston 2.07~4.17 object
20 compression-ratio Ratio de compression 7~23 float64
21 horsepower puissance 48~288 object
22 peak-rpm Sortie maximale 4150~6600 object
23 city-mpg Efficacité énergétique de la ville 13-49 (miles parcourus par gallon d'huile) int64
24 highway-mpg Efficacité énergétique sur les routes 16~54 int64
25 price prix 5118~45400 object
#Forme des données de sortie et nombre de défauts
print(df.shape)
print('Nombre de défauts:{}'.format(df.isnull().sum().sum()))

#Sortir les 5 premières lignes de données
df.head()

2_6_1_02.PNG

(3) Prétraitement des données

#Créer un DataFrame pour les colonnes cibles uniquement
auto = df[['price', 'horsepower', 'width', 'height']]

#Pour chaque colonne?Vérifiez le numéro qui contient
auto.isin(['?']).sum()

2_6_1_03.PNG

#"?Remplacez par NAN et supprimez la ligne par NAN
auto = auto.replace('?', np.nan).dropna()

#Vérifiez la forme de la matrice après suppression
auto.shape

2_6_1_04.PNG

#Confirmation du type de données
auto.dtypes

2_6_1_05.PNG

#Convertir le type de données
auto = auto.assign(price = pd.to_numeric(auto.price))
auto = auto.assign(horsepower = pd.to_numeric(auto.horsepower))

#Vérifiez le type de données converti
auto.dtypes

2_6_1_10.PNG

auto.corr()

2_6_1_06.PNG

⑷ Construction et évaluation du modèle

#Vérifiez les données
print(auto)

2_6_1_07.PNG

** À l'aide de ces données, effectuez une estimation du modèle pour la régression des crêtes et l'analyse de régression multiple, et comparez la précision des deux. ** **

#Importation pour la construction de modèles de régression de crête
from sklearn.linear_model import Ridge

#Importation pour la construction de modèles d'analyse de régression multiple
from sklearn.linear_model import LinearRegression

#Import pour le partitionnement des données (données d'entraînement et données de test)
from sklearn.model_selection import train_test_split
#Définir des variables explicatives et des variables objectives
x = auto.drop('price', axis=1)
y = auto['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)

** Tout d'abord, créez un modèle pour l'analyse de régression multiple et calculez le taux de précision des données d'entraînement et des données de test. ** **

#Initialisation de la classe LinearRegression
linear = LinearRegression()

#Exécution de l'apprentissage
linear.fit(X_train, Y_train)

#Taux de réponse correct des données d'entraînement
train_score_linear = format(linear.score(X_train, Y_train))
print('Taux de réponse correct de l'analyse de régression multiple(train):', 
      '{:.6f}'.format(float(train_score_linear)))

#Taux de réponse correct des données de test
test_score_linear = format(linear.score(X_test, Y_test))
print('Taux de réponse correct de l'analyse de régression multiple(test):', 
      '{:.6f}'.format(float(test_score_linear)))

2_6_1_08.PNG

** Ensuite, construisez un modèle de régression de crête et calculez le taux de précision des données d'entraînement et des données de test. ** **

#Initialisation de la classe Ridge
ridge = Ridge()

#Exécution de l'apprentissage
ridge.fit(X_train, Y_train)

#Taux de réponse correct des données d'entraînement
train_score_ridge = format(ridge.score(X_train, Y_train))
print('Taux de précision de la régression Ridge(train):', 
      '{:.6f}'.format(float(train_score_ridge)))

#Taux de réponse correct des données de test
test_score_ridge = format(ridge.score(X_test, Y_test))
print('Taux de précision de la régression Ridge(test):', 
      '{:.6f}'.format(float(test_score_ridge)))

2_6_1_09.PNG

Analyse de régression multiple(L) Retour de crête(R) Différence(L-R)
Taux de réponse correct des données d'entraînement 0.733358 0.733355 0.000003
Taux de réponse correct des données de test 0.737069 0.737768 -0.000699

Recommended Posts

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 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 2-1. Analyse de régression multiple (scikit-learn)
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é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 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 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
Expression de régression multiple en 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)
[scikit-learn, matplotlib] Analyse de régression multiple et dessin 3D
Analyse de régression LASSO facile avec Python (pas de théorie)
Analyse d'association en Python
Analyse de régression multiple avec Keras
Analyse des contraintes symétriques axiales avec Python
[Python] Régression linéaire avec scicit-learn
Évitez les boucles multiples en Python
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)