#Datenverarbeitungs- / Berechnungs- / Analysebibliothek
import numpy as np
import pandas as pd
#Grafikzeichnungsbibliothek
import matplotlib.pyplot as plt
%matplotlib inline
#Bibliothek für maschinelles Lernen
import sklearn
#Daten bekommen
url = 'https://raw.githubusercontent.com/yumi-ito/datasets/master/datasets_auto.csv'
#Lesen Sie die erfassten Daten als DataFrame-Objekt
df = pd.read_csv(url, header=None)
#Spaltenbezeichnung festlegen
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']
Variablennamen | Freie Übersetzung | Artikel (Kommentar) | Datentyp | |
---|---|---|---|---|
0 | symboling | Versicherungsrisikobewertung | -3, -2, -1, 0, 1, 2, 3.(3 ist risikoreich und gefährlich,-3 ist risikoarm und sicher) | int64 |
1 | normalized-losses | Normalisierungsverlust | 65〜256 | object |
2 | make | Hersteller | alfa-romero, audi, bmw, ..., volkswagen, volvo. | object |
3 | fuel-type | Treibstoffart | diesel, gas. | object |
4 | aspiration | Einlasstyp | std, turbo. | object |
5 | num-of-doors | Anzahl der Türen | four, two. | object |
6 | body-style | Körperstil | hardtop, wagon, sedan, hatchback, convertible. | object |
7 | drive-wheels | Antriebsräder | 4wd, fwd, rwd. | object |
8 | engine-location | Motorposition | front, rear. | object |
9 | wheel-base | Radstand | 86.6~120.9 | float64 |
10 | length | Kommandant | 141.1~208.1 | float64 |
11 | width | Fahrzeugbreite | 60.3~72.3 | float64 |
12 | height | Fahrzeughöhe | 47.8~59.8 | float64 |
13 | curb-weight | Unbemanntes Fahrzeuggewicht | 1488~4066 | int64 |
14 | engine-type | Motortyp | dohc, dohcv, l, ohc, ohcf, ohcv, rotor. | object |
15 | num-of-cylinders | Anzahl der Zylinder | eight, five, four, six, three, twelve, two. | object |
16 | engine-size | Motor Größe | 61~326 | int64 |
17 | fuel-system | Kraftstoffsystem | 1bbl, 2bbl, 4bbl, idi, mfi, mpfi, spdi, spfi. | object |
18 | bore | Innendurchmesser des Motorzylinders | 2.54~3.94 | object |
19 | stroke | Bewegungsumfang des Kolbens | 2.07~4.17 | object |
20 | compression-ratio | Kompressionsrate | 7~23 | float64 |
21 | horsepower | Pferdestärken | 48~288 | object |
22 | peak-rpm | Maximale Leistung | 4150~6600 | object |
23 | city-mpg | Kraftstoffeffizienz in der Stadt | 13-49 (Meilen pro Gallone Öl) | int64 |
24 | highway-mpg | Kraftstoffeffizienz auf Autobahnen | 16~54 | int64 |
25 | price | Preis | 5118~45400 | object |
#Form und Anzahl der Fehler der Ausgabedaten
print(df.shape)
print('Anzahl der Mängel:{}'.format(df.isnull().sum().sum()))
#Geben Sie die ersten 5 Datenzeilen aus
df.head()
#Erstellen Sie einen DataFrame nur für die Zielspalten
auto = df[['price', 'horsepower', 'width', 'height']]
#Für jede Spalte?Überprüfen Sie die Nummer, die enthält
auto.isin(['?']).sum()
#""?Durch NAN ersetzen und die Zeile durch NAN löschen
auto = auto.replace('?', np.nan).dropna()
#Überprüfen Sie die Form der Matrix nach dem Löschen
auto.shape
#Datentypbestätigung
auto.dtypes
#Datentyp konvertieren
auto = auto.assign(price = pd.to_numeric(auto.price))
auto = auto.assign(horsepower = pd.to_numeric(auto.horsepower))
#Überprüfen Sie den konvertierten Datentyp
auto.dtypes
assign ()
im Schlüsselwortargument Spaltenname = Wert
angeben, wird der angegebene Wert der vorhandenen Spalte zugewiesen, und wenn es sich um einen neuen Spaltennamen handelt, wird eine neue Spalte hinzugefügt. ..corr ()
von Pandas.auto.corr()
#Überprüfen Sie die Daten
print(auto)
** Führen Sie anhand dieser Daten eine Modellschätzung für die Gratregression und die multiple Regressionsanalyse durch und vergleichen Sie die Genauigkeit beider. ** ** **
#Import für die Modellbildung der Gratregression
from sklearn.linear_model import Ridge
#Import für die Modellbildung der multiplen Regressionsanalyse
from sklearn.linear_model import LinearRegression
#Import zur Datenpartitionierung (Trainingsdaten und Testdaten)
from sklearn.model_selection import train_test_split
drop ()
, um die Spalte price
zu entfernen und setzen Sie nur die erklärenden Variablen auf x und nur den price
auf y.#Legen Sie erklärende Variablen und objektive Variablen fest
x = auto.drop('price', axis=1)
y = auto['price']
#Unterteilt in Trainingsdaten und Testdaten
X_train, X_test, Y_train, Y_test = train_test_split(x, y, test_size=0.5, random_state=0)
** Erstellen Sie zunächst ein Modell für die multiple Regressionsanalyse und berechnen Sie die Genauigkeitsrate der Trainingsdaten und Testdaten. ** ** **
#Initialisierung der LinearRegression-Klasse
linear = LinearRegression()
#Ausführung des Lernens
linear.fit(X_train, Y_train)
#Richtige Antwortrate der Trainingsdaten
train_score_linear = format(linear.score(X_train, Y_train))
print('Richtige Antwortrate der multiplen Regressionsanalyse(train):',
'{:.6f}'.format(float(train_score_linear)))
#Richtige Antwortrate der Testdaten
test_score_linear = format(linear.score(X_test, Y_test))
print('Richtige Antwortrate der multiplen Regressionsanalyse(test):',
'{:.6f}'.format(float(test_score_linear)))
'{:. Anzahl der Stellen f}'. Format ()
gibt die Anzahl der Stellen nach dem Dezimalpunkt an.** Erstellen Sie als Nächstes ein Modell der Gratregression und berechnen Sie die Genauigkeitsrate der Trainingsdaten und Testdaten. ** ** **
#Initialisierung der Ridge-Klasse
ridge = Ridge()
#Ausführung des Lernens
ridge.fit(X_train, Y_train)
#Richtige Antwortrate der Trainingsdaten
train_score_ridge = format(ridge.score(X_train, Y_train))
print('Ridge Regressionsgenauigkeitsrate(train):',
'{:.6f}'.format(float(train_score_ridge)))
#Richtige Antwortrate der Testdaten
test_score_ridge = format(ridge.score(X_test, Y_test))
print('Ridge Regressionsgenauigkeitsrate(test):',
'{:.6f}'.format(float(test_score_ridge)))
Multiple Regressionsanalyse(L) | Ridge kehrt zurück(R) | Unterschied(L-R) | |
---|---|---|---|
Richtige Antwortrate der Trainingsdaten | 0.733358 | 0.733355 | 0.000003 |
Richtige Antwortrate der Testdaten | 0.737069 | 0.737768 | -0.000699 |