#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
#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()
#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()
#"?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
#Confirmation du type de données
auto.dtypes
#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
, si vous spécifiez
column name = value` dans l'argument mot-clé, la valeur spécifiée sera affectée à la colonne existante, et s'il s'agit d'un nouveau nom de colonne, une nouvelle colonne sera ajoutée. ..corr ()
des pandas.auto.corr()
#Vérifiez les données
print(auto)
** À 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
drop ()
pour supprimer la colonne price
et ne définissez que les variables explicatives sur x et uniquement le price
sur y.train_test_split
de sklearn, la variable explicative x et la variable objectif y sont respectivement séparées en données d'apprentissage (train) et données de test (test).#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)))
'{:. Nombre de chiffres f}'. Format ()
spécifie le nombre de chiffres après la virgule décimale.train_score_linear
et test_score_linear
est de type str, ils sont convertis en nombres à virgule flottante parfloat ()
.** 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)))
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 |