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.
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
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]
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:]
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 ]
Dann sagen Sie den y-Wert basierend auf den Trainingsdaten voraus.
X1 = np.array([1.2, 4])
print(regr.predict(X1))
#=> 350.860363861
Lassen Sie uns das Ergebnis bewerten.
print(regr.score(X_test, y_test))
#=> 0.949827492261
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')
Ein Flugzeug wurde gesucht. Es scheint, dass sie fast gleich sind.
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