[PYTHON] In 100 Tagen sind Sie Ingenieur. ――Tag 81 ――Programmieren ――Über maschinelles Lernen 6

Klicken Sie hier bis gestern

Sie werden in 100 Tagen Ingenieur - Tag 76 - Programmierung - Über maschinelles Lernen

Sie werden Ingenieur in 100 Tagen - Tag 70 - Programmieren - Über Scraping

Sie werden in 100 Tagen Ingenieur - Tag 66 - Programmierung - Über die Verarbeitung natürlicher Sprache

Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Über Wahrscheinlichkeit 1

Sie werden in 100 Tagen Ingenieur - Tag 59 - Programmierung - Über Algorithmen

Sie werden in 100 Tagen Ingenieur --- Tag 53 - Git - Über Git

Sie werden in 100 Tagen Ingenieur - Tag 42 - Cloud - Über Cloud-Dienste

Sie werden in 100 Tagen Ingenieur - Tag 36 - Datenbank - Über die Datenbank

Sie werden Ingenieur in 100-Tage-24-Python-Grundlagen der Python-Sprache 1

Sie werden in 100 Tagen Ingenieur - Tag 18 - JavaScript - Grundlagen von JavaScript 1

Sie werden in 100 Tagen Ingenieur - 14. Tag - CSS - CSS-Grundlagen 1

Sie werden in 100 Tagen Ingenieur - Tag 6 - HTML - HTML-Grundlagen 1

Diese Zeit ist eine Fortsetzung der Geschichte über maschinelles Lernen.

Über das Regressionsmodell

Ich werde erklären, was Sie zum ersten Mal mit maschinellem Lernen tun können, aber was Sie mit maschinellem Lernen tun können Grundsätzlich gibt es drei.

· Rückkehr ・ Klassifizierung ・ Clustering

Grob gesagt wird es zu "Vorhersage", aber der Teil dessen, was "vorherzusagen" ist, ändert sich.

・ Return: Numerische Werte vorhersagen ・ Klassifizierung: Kategorien vorhersagen ・ Clustering: Fühlen Sie sich gut an

Das "Rückgabemodell" sagt den numerischen Wert voraus.

Die diesmal verwendeten Daten sind die Bostoner Hauspreisdaten, die an "scikit-learn" angehängt sind.

Säule Erläuterung
CRIM Pro-Kopf-Kriminalitätsrate nach Städten
ZN Die Wohngrundstücksquote beträgt 25,Pakete über 000 Quadratfuß
INDUS Prozentsatz der Nicht-Einzelhändler-Hektar pro Stadt
CHAS Charlie's River Dummy Variable (1 wenn an der Flussgrenze, 0 sonst)
NOX Stickstoffmonoxidkonzentration (1 von 10 Millionen)
RM Durchschnittliche Anzahl der Zimmer pro Wohneinheit
AGE Altersverhältnis der eigenen und besetzten Einheiten, die vor 1940 gebaut wurden
DIS Gewichtete Entfernung zu 5 Bostoner Beschäftigungszentren
RAD Indikator für die Zugänglichkeit zur radialen Autobahn
TAX 10,Voller Steuersatz pro 000 USD
PTRATIO Schüler-Lehrer-Verhältnis
B Prozentsatz der Schwarzen in der Stadt
LSTAT Niedrige Rate pro Kopf
MEDV Median Owner-Resident Homes bei 1000 $

Die "MEDV" ist die "Zielvariable", die Sie vorhersagen möchten, und die anderen sind die "erklärenden Variablen".

Datenvisualisierung

Lassen Sie uns zunächst sehen, um welche Art von Daten es sich handelt.

from sklearn.datasets import load_boston

#Daten lesen
boston = load_boston()
#Erstellen eines Datenrahmens
boston_df = pd.DataFrame(data=boston.data,columns=boston.feature_names)
boston_df['MEDV'] = boston.target

#Datenübersicht
print(boston_df.shape)
boston_df.head()
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT MEDV
0 0.00632 18 2.31 0 0.538 6.575 65.2 4.09 1 296 15.3 396.9 4.98 24
1 0.02731 0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 396.9 9.14 21.6
2 0.02729 0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 392.83 4.03 34.7
3 0.03237 0 2.18 0 0.458 6.998 45.8 6.0622 3 222 18.7 394.63 2.94 33.4
4 0.06905 0 2.18 0 0.458 7.147 54.2 6.0622 3 222 18.7 396.9 5.33 36.2

Es enthält numerische Daten.

Lassen Sie es uns visualisieren, um die Beziehung zwischen den einzelnen Spalten zu sehen.

sns.pairplot(data=boston_df[list(boston_df.columns[0:6])+['MEDV']])
plt.show()

image.png

sns.pairplot(data=boston_df[list(boston_df.columns[6:13])+['MEDV']])
plt.show()

image.png

Schauen wir uns auch die Korrelation jeder Spalte an.

boston_df.corr()
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT MEDV
CRIM 1 -0.200469 0.406583 -0.055892 0.420972 -0.219247 0.352734 -0.37967 0.625505 0.582764 0.289946 -0.385064 0.455621 -0.388305
ZN -0.200469 1 -0.533828 -0.042697 -0.516604 0.311991 -0.569537 0.664408 -0.311948 -0.314563 -0.391679 0.17552 -0.412995 0.360445
INDUS 0.406583 -0.533828 1 0.062938 0.763651 -0.391676 0.644779 -0.708027 0.595129 0.72076 0.383248 -0.356977 0.6038 -0.483725
CHAS -0.055892 -0.042697 0.062938 1 0.091203 0.091251 0.086518 -0.099176 -0.007368 -0.035587 -0.121515 0.048788 -0.053929 0.17526
NOX 0.420972 -0.516604 0.763651 0.091203 1 -0.302188 0.73147 -0.76923 0.611441 0.668023 0.188933 -0.380051 0.590879 -0.427321
RM -0.219247 0.311991 -0.391676 0.091251 -0.302188 1 -0.240265 0.205246 -0.209847 -0.292048 -0.355501 0.128069 -0.613808 0.69536
AGE 0.352734 -0.569537 0.644779 0.086518 0.73147 -0.240265 1 -0.747881 0.456022 0.506456 0.261515 -0.273534 0.602339 -0.376955
DIS -0.37967 0.664408 -0.708027 -0.099176 -0.76923 0.205246 -0.747881 1 -0.494588 -0.534432 -0.232471 0.291512 -0.496996 0.249929
RAD 0.625505 -0.311948 0.595129 -0.007368 0.611441 -0.209847 0.456022 -0.494588 1 0.910228 0.464741 -0.444413 0.488676 -0.381626
TAX 0.582764 -0.314563 0.72076 -0.035587 0.668023 -0.292048 0.506456 -0.534432 0.910228 1 0.460853 -0.441808 0.543993 -0.468536
PTRATIO 0.289946 -0.391679 0.383248 -0.121515 0.188933 -0.355501 0.261515 -0.232471 0.464741 0.460853 1 -0.177383 0.374044 -0.507787
B -0.385064 0.17552 -0.356977 0.048788 -0.380051 0.128069 -0.273534 0.291512 -0.444413 -0.441808 -0.177383 1 -0.366087 0.333461
LSTAT 0.455621 -0.412995 0.6038 -0.053929 0.590879 -0.613808 0.602339 -0.496996 0.488676 0.543993 0.374044 -0.366087 1 -0.737663
MEDV -0.388305 0.360445 -0.483725 0.17526 -0.427321 0.69536 -0.376955 0.249929 -0.381626 -0.468536 -0.507787 0.333461 -0.737663 1

Mit Ausnahme einiger Spalten scheint die Korrelation zwischen den einzelnen Spalten nicht so hoch zu sein.

Das "Regressionsmodell" möchte sich anhand dieser Spalten auf den Wert einer "Zielvariablen" stützen.

Erstellen eines Vorhersagemodells

** Datenaufteilung **

Teilen Sie zunächst die Daten für Training und Test auf. Diesmal teilen wir uns um 6: 4.

from sklearn.model_selection import train_test_split

#6 für Trainings- und Testdaten:Geteilt durch 4
X = boston_df.drop('MEDV',axis=1)
Y = boston_df['MEDV']
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.4, random_state=0)

** Modellierung ** Erstellen Sie als Nächstes ein Vorhersagemodell.

Hier werden wir ein Regressionsmodell unter Verwendung des "linearen Regressionsmodells" mit der Zielvariablen als "MEDV" und den erklärenden Variablen als "CRIM ~ LSTAT" erstellen.

Grob gesagt ist Y = x1 * a + x2 * b + ... ϵ Es ist ein Bild davon, einen solchen Ausdruck zu machen.

"a" und "b" heißen "Rückgabekoeffizient", und jede Variable ist Es zeigt, wie viel es zur Vorhersage der Zielvariablen beiträgt.

"ϵ" heißt "Residuum" und repräsentiert die "Abweichung" aller Daten und Ausdrücke. In dem "linearen Regressionsmodell" wird die Summe der "Restquadrate" jeder Daten addiert. Finden Sie jeden Koeffizienten, indem Sie ihn minimieren.

Die verwendete Bibliothek heißt "linear_model".

from sklearn import linear_model

#Lernen mit linearer Regression
model = linear_model.LinearRegression()
model.fit(x_train, y_train)

Die Modellierung erfolgt sofort, indem die Bibliothek aufgerufen und "fit" ausgeführt wird.

** Genauigkeitsüberprüfung **

Bei der Genauigkeitsüberprüfung des Regressionsmodells werden wir untersuchen, inwieweit sich die Vorhersage und die tatsächliche Messung unterscheiden.

Als häufig verwendeter Index nean squared error (MSE) und Root Mean Squared Error (RMSE) Es gibt einen R Quadratwert $ R ^ 2 $.

Die `MSE ist der Durchschnittswert der Summe der Quadrate der Fehler, und wenn sowohl die Trainingsdaten als auch die Testdaten klein sind, wird die Leistung des Modells als gut beurteilt.

RMSE ist der Wert der Quadratwurzel der durchschnittlichen Quadratsumme des Fehlers.

Der "R-Quadrat-Wert" $ R ^ 2 $ nimmt 1, wenn "MSE" 0 ist, und je besser die Leistung des Modells ist, desto näher an 1.

スクリーンショット 2020-06-09 19.19.12.png
from sklearn.metrics import mean_squared_error

y_pred = model.predict(x_test)

print('MSE : {0} '.format(mean_squared_error(y_test, y_pred)))
print('RMSE : {0} '.format(np.sqrt(mean_squared_error(y_test, y_pred))))
print('R^2 : {0}'.format(model.score(x_test, y_test)))

MSE : 25.79036215070245 RMSE : 5.078421226198399 R^2 : 0.6882607142538019

Übrigens, wenn man die Genauigkeit betrachtet, ist der Wert von "RMSE" um ungefähr 5,0 niedriger. Es ist ein Fehler, dass die durchschnittliche Abweichung vom Hauspreis so groß ist.

** Restgrundstück **

Wie stark ist das Vorhersagemodell übrigens abgewichen? Lassen Sie uns das "Residuum" visualisieren.

#Residuen zeichnen
plt.scatter(y_pred, y_pred - y_test, c = 'red', marker = 's')
plt.xlabel('Predicted Values')
plt.ylabel('Residuals')

# y =Zeichnen Sie eine gerade Linie auf 0
plt.hlines(y = 0, xmin = -10, xmax = 50, lw = 2, color = 'blue')
plt.xlim([10, 50])
plt.show()

image.png

Durch Kombinieren der Testdaten und der Vorhersagedaten können Sie sehen, wie groß die Abweichung ist. Diejenigen, die nicht ausgerichtet sind, sind ziemlich nicht ausgerichtet.

Erstellen Sie mit dieser Art von Gefühl ein Modell, damit es weniger Abweichungen gibt, wählen Sie Daten aus, verarbeiten Sie sie vor, passen Sie die Modellparameterwerte an usw. Wir sind bestrebt, die Genauigkeit mit wenigen Fehlern zu verbessern.

Zusammenfassung

Heute habe ich erklärt, wie das Regressionsmodell funktioniert. Es gibt viele andere Regressionsmodelle.

Beginnen wir zunächst mit der Regression und unterdrücken, wie modelliert und verifiziert wird.

19 Tage bis Sie Ingenieur werden

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

In 100 Tagen sind Sie Ingenieur. ――Tag 81 ――Programmieren ――Über maschinelles Lernen 6
In 100 Tagen sind Sie Ingenieur. ――Tag 82 ――Programmieren ――Über maschinelles Lernen 7
In 100 Tagen sind Sie Ingenieur. ――Tag 79 ――Programmieren ――Über maschinelles Lernen 4
In 100 Tagen sind Sie Ingenieur. ――Tag 76 ――Programmieren ――Über maschinelles Lernen
In 100 Tagen sind Sie Ingenieur. ――Tag 80 ――Programmieren ――Über maschinelles Lernen 5
In 100 Tagen sind Sie Ingenieur. ――Tag 78 ――Programmieren ――Über maschinelles Lernen 3
Sie werden in 100 Tagen Ingenieur. ――Tag 84 ――Programmieren ――Über maschinelles Lernen 9
In 100 Tagen sind Sie Ingenieur. ――Tag 83 ――Programmieren ――Über maschinelles Lernen 8
In 100 Tagen sind Sie Ingenieur. ――Tag 77 ――Programmieren ――Über maschinelles Lernen 2
In 100 Tagen sind Sie Ingenieur. ――Tag 85 ――Programmieren ――Über maschinelles Lernen 10
In 100 Tagen sind Sie Ingenieur. ――Tag 71 ――Programmieren ――Über das Schaben 2
In 100 Tagen sind Sie Ingenieur. ――Tag 61 ――Programmieren ――Über Erkundung
In 100 Tagen sind Sie Ingenieur. ――Tag 74 ――Programmieren ――Über das Schaben 5
In 100 Tagen sind Sie Ingenieur. ――Tag 73 ――Programmieren ――Über das Schaben 4
In 100 Tagen sind Sie Ingenieur. ――Tag 75 ――Programmieren ――Über das Schaben 6
In 100 Tagen sind Sie Ingenieur. ――Tag 68 ――Programmieren ――Über TF-IDF
In 100 Tagen sind Sie Ingenieur. ――Tag 70 ――Programmieren ――Über das Schaben
Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Wahrscheinlichkeit 1
Sie werden in 100 Tagen Ingenieur. ――Tag 65 ――Programmieren ――Über Wahrscheinlichkeit 3
Sie werden in 100 Tagen Ingenieur. ――Tag 64 ――Programmieren ――Über Wahrscheinlichkeit 2
In 100 Tagen sind Sie Ingenieur. ――Tag 60 ――Programmieren ――Über Datenstruktur und Sortieralgorithmus
Sie werden in 100 Tagen Ingenieur - 27. Tag - Python - Python-Übung 1
Sie werden in 100 Tagen Ingenieur - Tag 34 - Python - Python-Übung 3
Sie werden in 100 Tagen Ingenieur - 31. Tag - Python - Python-Übung 2
Sie werden in 100 Tagen Ingenieur. ――Tag 67 ――Programmieren ――Über morphologische Analyse
Sie werden in 100 Tagen Ingenieur. ――Tag 66 ――Programmieren ――Über die Verarbeitung natürlicher Sprache
Sie werden in 100 Tagen Ingenieur. ――Tag 24 ―― Python ―― Grundlagen der Python-Sprache 1
Sie werden in 100 Tagen Ingenieur. ――Tag 30 ―― Python ―― Grundlagen der Python-Sprache 6
Sie werden in 100 Tagen Ingenieur. ――Tag 25 ―― Python ―― Grundlagen der Python-Sprache 2
Sie werden in 100 Tagen Ingenieur - 29. Tag - Python - Grundlagen der Python-Sprache 5
Sie werden in 100 Tagen Ingenieur - Tag 33 - Python - Grundlagen der Python-Sprache 8
Sie werden in 100 Tagen Ingenieur - 26. Tag - Python - Grundlagen der Python-Sprache 3
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7
Sie werden in 100 Tagen Ingenieur - 28. Tag - Python - Grundlagen der Python-Sprache 4
Werden Sie bald KI-Ingenieur! Lernen Sie in wenigen Tagen umfassend Python / KI / Maschinelles Lernen / Deep Learning / Statistische Analyse!
Sie müssen vorsichtig mit den Befehlen sein, die Sie jeden Tag in der Produktionsumgebung verwenden.
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Programmieren des Lernprotokolls 2. Tag
Bis ein Ingenieur, der einmal über maschinelles Lernen frustriert war, es schafft, maschinelles Lernen bei der Arbeit einzusetzen
[Maschinelles Lernen] Fassen wir die zufällige Gesamtstruktur auf leicht verständliche Weise zusammen
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Über maschinelles Lernen gemischte Matrix
Python Machine Learning Programming> Schlüsselwörter
Wird in EDA für maschinelles Lernen verwendet
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Lernen Sie maschinelles Lernen jederzeit und überall in der bedarfsgesteuerten Jupyter Notebook-Umgebung