○ Die Hauptpunkte dieses Artikels Beachten Sie, dass ich gelernt habe, das Regressionsproblem zu bewerten.
Lernen und Bewerten von Regressionsproblemen
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from sklearn.svm import SVR
%matplotlib inline
#Datenaufbereitung. Boston Immobilienpreise
data = load_boston()
X = data.data[:, [5,]] #Extrahieren Sie nur die Anzahl der Räume als erklärende Variablen
y = data.target
#Lernen mit einem einfachen Regressionsmodell
model_l = LinearRegression()
model_l.fit(X, y)
#Wiederholungsgerade y=ax +Neigung von b und Abschnittswert
print(model_l.coef_) #a: Neigung
print(model_l.intercept_) #b: Abschnitt
#Prognose
l_pred = model_l.predict(X)
#Grafikanzeige
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.legend()
plt.show()
Ergebnis [9.10210898] -34.67062077643857
Ist es so
Berechnete den quadratischen Fehler zwischen dem vorhergesagten Wert und dem tatsächlichen Wert und nahm den Durchschnitt. Je kleiner der Wert ist, desto korrekter ist der vorhergesagte Wert.
Durchschnittlicher quadratischer Fehler
mean_squared_error(y, l_pred)
43.60055177116956
Eine Zahl, die die Genauigkeit der Vorhersage unter Verwendung des mittleren quadratischen Fehlers angibt. Es wird ein Wert von 0 bis 1 sein. Selbst beim Vergleich verschiedener Werte sind die Werte relativ vergleichbar.
Entscheidungskoeffizient
r2_score(y, l_pred)
0.48352545599133423
Ist das Ergebnis des linearen Regressionsmodells ein gutes Ergebnis? Versuchen Sie als nächstes andere Algorithmen.
Lernen und Bewerten von SVR
# SVR(Support Vector Machine (Kernel-Methode))Lernen in
model_s = SVR(C=0.01, kernel='linear') #Der Regularisierungsparameter ist 0.Verwenden Sie einen linearen Kernel mit 01
model_s.fit(X, y)
#Wiederholungsgerade y=ax +Neigung von b und Abschnittswert
print(model_s.coef_) #a: Neigung
print(model_s.intercept_) #b: Abschnitt
#Prognose
s_pred = model_s.predict(X)
#Grafikanzeige
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.plot(X, s_pred, color='black', label='svr curve')
ax.legend()
plt.show()
Ergebnis [[1.64398]] [11.13520958]
Ist SVR subtiler? ??
Mittlerer quadratischer Fehler und Bestimmungskoeffizient
mean_squared_error(y, s_pred)
72.14197118147209
r2_score(y, s_pred)
0.14543531775956597
Lineare Regression ist besser. Jedoch! !! Ich weiß nicht, ob ich die Hyperparameter (Regularisierungsparameter und Kernel-Methode) von SVR ändere.
SVR-Lernen und -Bewertung (Ändern von Hyperparametern)
model_s2 = SVR(C=1.0, kernel='rbf') #Verwenden Sie den rbf-Kernel mit dem Regularisierungsparameter 1
model_s2.fit(X, y)
#Prognose
s_pred2 = model_s2.predict(X)
#Grafikanzeige
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.plot(X, s_pred, color='black', label='svr curve')
ax.plot(X, s_pred2, color='orange', label='svr_rbf curve')
ax.legend()
plt.show()
Ergebnis
Ist es glatt und schön? ??
Mittlerer quadratischer Fehler und Bestimmungskoeffizient
mean_squared_error(y, s_pred2)
37.40032481992347
r2_score(y, s_pred2)
0.5569708427424378
Besser als lineare Regression. Es hängt von den Hyperparametern ab.
■ Eindruck ・ Studieren Sie, wie Regressionsprobleme bewertet werden. Sowohl der durchschnittliche quadratische Fehler als auch der Bestimmungskoeffizient werden basierend auf der "Differenz zwischen dem vorhergesagten Wert und den tatsächlichen Daten" bestimmt. Das Programm vergleicht die "Liste der richtigen Antwortdaten" und die "Liste der vorhergesagten Daten", macht einen Unterschied in den einzelnen Daten, quadriert sie und mittelt sie. Leicht sinnlich zu verstehen.