Hier Un des livres présentés SciPy et NumPy Optimiser et booster votre programmation Python prend un exemple et parle de régression par scikit-learn.
Tout d'abord, importez la bibliothèque pour écrire des modèles 3D.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# scikit-Utiliser la régression linéaire de learn
from sklearn import linear_model
#Utiliser un exemple de jeu de données pour la régression
from sklearn.datasets.samples_generator import make_regression
Il existe des exemples de données, alors classons-les en fonction des données d'entraînement.
#Générez des données synthétiques pour la formation et les 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]
Divisez les données générées dans un rapport de 80:20 pour la formation et les examens.
X_train, X_test = X[:80], X[-20:]
y_train, y_test = y[:80], y[-20:]
Nous nous formerons quand nous serons prêts. Créez d'abord une instance du classificateur, puis entraînez le classificateur avec la méthode .fit familière.
regr = linear_model.LinearRegression()
#train
regr.fit(X_train, y_train)
#Afficher les estimations
print(regr.coef_)
#=> [-10.25691752 90.5463984 ]
Prédisez ensuite la valeur y en fonction des données d'entraînement.
X1 = np.array([1.2, 4])
print(regr.predict(X1))
#=> 350.860363861
Évaluons le résultat.
print(regr.score(X_test, y_test))
#=> 0.949827492261
Les données seules ne sont pas intuitives, alors visualisons-les à la fin.
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')
Un avion a été recherché. Il semble qu'ils soient presque les mêmes.
J'ai pu dessiner un bel avion à l'aide de l'échantillon de données. Dans les vrais problèmes, cela peut ne pas aller très bien, mais il est utile de supprimer la théorie.
Recommended Posts