[PYTHON] Regressionsmodell mit Scikit-Learn und dessen Visualisierung

Gestern Eines der Bücher stellte SciPy und NumPy Optimieren und Boosten Ihrer Python-Programmierung nimmt ein Beispiel und spricht über Regression durch Scikit-Learn.

Berechnung der Regressionsebene aus dem 3D-Modell

Importieren Sie zunächst die Bibliothek zum Schreiben von 3D-Modellen.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# scikit-Verwenden Sie die lineare Regression von learn
from sklearn import linear_model
#Verwenden Sie einen Beispieldatensatz für die Regression
from sklearn.datasets.samples_generator import make_regression

Generierung von Trainingsdaten aus Beispieldaten

Es gibt Beispieldaten, also klassifizieren wir sie anhand der Trainingsdaten.

#Generieren Sie synthetische Daten für Training und Tests
X, y = make_regression(n_samples=100, n_features=2, n_informative=1,
                       random_state=0, noise=50)
# =>
# [[ 1.05445173 -1.07075262]
#  [-0.36274117 -0.63432209]
# ...
#  [-0.17992484  1.17877957]
#  [-0.68481009  0.40234164]]
# [  -6.93224214   -4.12640648   29.47265153  -12.03166314 -121.67258636
#  -149.24989393  113.53496654   -7.83638906  190.00097568   49.48805247
# ...
#   246.92583786  171.84739934  -33.55917696   38.71008939  -28.23999523
#    39.5677481  -168.02196071 -201.18826919   69.07078178  -36.96534574]

Trennung von Trainingsdaten und Testdaten

Teilen Sie die generierten Daten für Schulungen und Prüfungen im Verhältnis 80:20 auf.

X_train, X_test = X[:80], X[-20:]
y_train, y_test = y[:80], y[-20:]

Klassifizierertraining

Wir werden trainieren, wenn wir bereit sind. Erstellen Sie zuerst eine Instanz des Klassifikators und trainieren Sie dann den Klassifikator mit der bekannten .fit-Methode.

regr = linear_model.LinearRegression()
#Zug
regr.fit(X_train, y_train)

#Schätzungen anzeigen
print(regr.coef_)
#=> [-10.25691752 90.5463984 ]

Wertvorhersage

Dann sagen Sie den y-Wert basierend auf den Trainingsdaten voraus.

X1 = np.array([1.2, 4])
print(regr.predict(X1))
#=> 350.860363861

Auswertung

Lassen Sie uns das Ergebnis bewerten.

print(regr.score(X_test, y_test))
#=> 0.949827492261

Visualisierung

Die Daten allein sind nicht intuitiv, also visualisieren wir sie am Ende.

fig = plt.figure(figsize=(8, 5))
ax = fig.add_subplot(111, projection='3d')
# ax = Axes3D(fig)

# Data
ax.scatter(X_train[:, 0], X_train[:, 1], y_train, facecolor='#00CC00')
ax.scatter(X_test[:, 0], X_test[:, 1], y_test, facecolor='#FF7800')

coef = regr.coef_
line = lambda x1, x2: coef[0] * x1 + coef[1] * x2

grid_x1, grid_x2 = np.mgrid[-2:2:10j, -2:2:10j]
ax.plot_surface(grid_x1, grid_x2, line(grid_x1, grid_x2),
                alpha=0.1, color='k')
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
ax.zaxis.set_visible(False)

fig.savefig('image.png', bbox='tight')

image.png

Ein Flugzeug wurde gesucht. Es scheint, dass sie fast gleich sind.

Zusammenfassung

Mit dem Beispieldatensatz konnte ich ein schönes Flugzeug zeichnen. Bei echten Problemen mag es nicht sehr gut gehen, aber es ist hilfreich, die Theorie zu unterdrücken.

Recommended Posts

Regressionsmodell mit Scikit-Learn und dessen Visualisierung
Clustering und Visualisierung mit Python und CytoScape
[scikit-learn, matplotlib] Multiple Regressionsanalyse und 3D-Zeichnung
Multivariables Regressionsmodell mit Scikit-Learn - Ich habe versucht, SVR zu vergleichen und zu verifizieren
Analyse von Finanzdaten durch Pandas und deren Visualisierung (2)
Analyse von Finanzdaten durch Pandas und deren Visualisierung (1)
Zweidimensionale Visualisierung von Dokumentvektoren mit einem von Word2Vec trainierten Modell
[Übersetzung] scikit-learn 0.18 Tutorial Statistisches Lernen Tutorial für die wissenschaftliche Datenverarbeitung Modellauswahl: Auswahl des Schätzers und seiner Parameter
Rückkehr nach dem Gaußschen Verfahren
Modellkomplexität und Robustheit
Regression mit einem linearen Modell
Verwenden von MLflow mit Databricks ② - Visualisierung experimenteller Parameter und Metriken -
[Maschinelles Lernen] Verständnis der logistischen Regression sowohl durch Scikit-Lernen als auch durch Mathematik
Wissenschaftlich-technische Berechnung mit Python] Zeichnen und Visualisieren von 3D-Isoplanes und deren Querschnittsansichten mit Mayavi