Dieses Mal werde ich die Implementierung (Code) der linearen Regression zusammenfassen.
Wir werden mit den folgenden 6 Schritten fortfahren.
Importieren Sie zunächst die erforderlichen Module.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#Modul zum Lesen des Datensatzes
from sklearn.datasets import load_boston
#Modul, das Trainingsdaten und Testdaten trennt
from sklearn.model_selection import train_test_split
#Modul, das eine lineare Regression durchführt (Minimum-Square-Methode)
from sklearn.linear_model import LinearRegression
#Modul zur Bewertung anhand des mittleren quadratischen Fehlers (MSE)
from sklearn.metrics import mean_squared_error
#Entscheidungsfaktor (r2_Modul nach Punktzahl zu bewerten)
from sklearn.metrics import r2_score
#Boston-Datensatz lesen
boston = load_boston()
#Teilen Sie in objektive Variable und erklärende Variable
X, y = boston.data, boston.target
#Teilen Sie in Trainingsdaten und Testdaten
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
#Erstellen Sie eine Instanz der linearen Regression
lr = LinearRegression()
#Finden Sie jedes Gewicht nach der Methode der kleinsten Quadrate
lr.fit(X_train, y_train)
#Ausgabeabschnitt
print(lr.intercept_)
#Ausgangsregressionskoeffizient (Gradient)
print(lr.coef_)
Ausgabeergebnis
lr.intercept_: 22.38235838998073
lr.coef_: [-1.30942592e-01 3.93397530e-02 3.34152241e-02 2.69312969e+00
-1.77337676e+01 3.95093181e+00 -1.16396424e-03 -1.51204896e+00
3.36066399e-01 -1.37052283e-02 -9.54346277e-01 8.23484120e-03
-5.17616471e-01]
lr.intercept_: section (Gewicht $ w_0 $) lr.coef_: Regressionskoeffizient / Gradient (Gewicht $ w_1 $ ~ $ w_ {13} $)
Daher wurden die konkreten Zahlenwerte in der folgenden Modellformel (Rückgabeformel) erhalten.
$ y = w_0 + w_1x_1+w_2x_2+ \cdots + w_{12}x_{12} + w_{13}x_{13}$
Fügen Sie die Testdaten (X_test) in die zuvor erstellte Modellformel ein und erhalten Sie den vorhergesagten Wert (y_pred).
y_pred = lr.predict(X_test)
y_pred
Ausgabeergebnis
y_pred: [34.21868721 14.30330361 18.5687412 19.17046762 22.60218908 31.75197222
13.56424899 19.9953213 36.91942317 ..... 25.08561495, 13.68910956]
#Erstellen von Zeichnungsobjekten und Nebenhandlungen
fig, ax = plt.subplots()
#Restgrundstück
ax.scatter(y_pred, y_pred - y_test, marker = 'o')
# y =Zeichnen Sie die rote Gerade von 0
ax.hlines(y = 0, xmin = -10, xmax = 50, linewidth = 2, color = 'red')
#Stellen Sie die Achsenbeschriftung ein
ax.set_xlabel('y_pred')
ax.set_ylabel('y_pred - y_test')
#Grafiktitel hinzugefügt
ax.set_title('Residual Plot')
plt.show()
Ausgabeergebnis
Die Daten sind oberhalb und unterhalb der roten Linie gut ausbalanciert (y_pred --y_test = 0).
Es kann bestätigt werden, dass die Ausgabe des vorhergesagten Werts keine große Verzerrung aufweist.
Bei der linearen Regression erfolgt die Bewertung anhand der folgenden beiden Indikatoren.
・ Durchschnittlicher quadratischer Fehler (MSE) ・ Entscheidungskoeffizient (r2_score)
#Mittlerer quadratischer Fehler (MSE)
print(mean_squared_error(y_test, y_pred))
#Entscheidungskoeffizient
print(r2_score(y_test, y_pred))
Ausgabeergebnis
MSE: 19.858434053618794
r2_score: 0.7579111486552739
Aus dem oben Gesagten konnten wir anhand von zwei Indikatoren bewerten.
Bei der linearen Regression erstellen und bewerten wir ein Modell basierend auf den obigen Schritten 1 bis 6.
Dieses Mal habe ich für Anfänger nur die Implementierung (Code) zusammengefasst. Mit Blick auf das Timing in der Zukunft möchte ich einen Artikel über Theorie (mathematische Formel) schreiben.
Danke fürs Lesen.
Recommended Posts