[PYTHON] Modèle de régression utilisant scikit-learn et sa visualisation

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.

Calcul du plan de régression à partir d'un modèle 3D

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

Génération de données d'entraînement à partir d'échantillons de données

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]

Séparation des données d'entraînement et des données de test

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:]

Formation de classificateur

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édiction de valeur

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

Évaluation

Évaluons le résultat.

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

Visualisation

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')

image.png

Un avion a été recherché. Il semble qu'ils soient presque les mêmes.

Résumé

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

Modèle de régression utilisant scikit-learn et sa visualisation
Clustering et visualisation à l'aide de Python et CytoScape
[scikit-learn, matplotlib] Analyse de régression multiple et dessin 3D
Modèle de régression multivariée avec scikit-learn - J'ai essayé de comparer et de vérifier SVR
Analyse des données financières par pandas et leur visualisation (2)
Analyse des données financières par pandas et leur visualisation (1)
Visualisation bidimensionnelle des vecteurs de documents à l'aide du modèle entraîné Word2Vec
[Français] scikit-learn 0.18 Tutorial Tutoriel d'apprentissage statistique pour le traitement des données scientifiques Sélection du modèle: sélection de l'estimateur et de ses paramètres
Retour en utilisant le processus gaussien
Complexité et robustesse du modèle
Régression avec un modèle linéaire
Utilisation de MLflow avec Databricks ② --Visualisation des paramètres expérimentaux et des métriques -
[Apprentissage automatique] Comprendre la régression logistique à partir de scikit-learn et des mathématiques
Calcul scientifique / technique avec Python] Dessin et visualisation d'isoplans 3D et de leurs vues en coupe à l'aide de mayavi