Fondamentaux : ajout de Scikit-Learn

This commit is contained in:
Philippe Roy 2023-06-19 19:23:15 +02:00
parent 001aa52728
commit c5b0cb3bf5
6 changed files with 53 additions and 15 deletions

View File

@ -1,6 +1,7 @@
import numpy as np
import matplotlib.pyplot as plt
import time
import numpy as np
import sklearn
import matplotlib.pyplot as plt
###############################################################################
# 01-regression_lineaire.py
@ -22,6 +23,13 @@ import time
# - .dot : produit de matrice
###
###
# Commandes Scikit-Learn :
# - sklearn.linear_model.LinearRegression() : créer un modèle de régression linéaire (méthode des moindres carrés)
# - .fit : entrainement du modèle
# - .predict : prédiction du modèle
###
###############################################################################
# Initialisation
###############################################################################
@ -66,6 +74,15 @@ theta = theta_best
y_predict=X_new.dot(theta_best) # Liste des prédictions y_predict
###############################################################################
# Avec Scikit-Learn (skl)
###############################################################################
model_skl = sklearn.linear_model.LinearRegression() # Modèle régression linéaire
model_skl.fit(x1, y) # Entrainement
# print (model_skl.intercept_[0],model_skl.coef_[0][0])
y_predict_skl=model_skl.predict(x1_new) # Prédiction
###############################################################################
# Résultats
###############################################################################
@ -73,13 +90,15 @@ y_predict=X_new.dot(theta_best) # Liste des prédictions y_predict
# Plot
donnees_ax.set_title("Données")
donnees_ax.plot(x1_new, y_predict, 'r-', label="Prédictions")
donnees_ax.plot(x1_new, y_predict_skl, 'y-', label="Prédictions - Scikit-Learn")
donnees_ax.set_xlabel(r'$x_1$')
donnees_ax.set_ylabel(r'$y$', rotation=0)
donnees_ax.legend()
plt.show()
# Performances
print ("Theta th : theta0 : "+str(4)+" ; theta1 : "+str(3))
print ("Theta : theta0 : "+str(round(float(theta[0]),3))+" ; theta1 : "+str(round(float(theta[1]),3)))
print ("Erreurs : theta0 : "+str(round(float(theta[0]-4),3))+" ; theta1 : "+str(round(float(theta[1]-3),3)))
print ("Temps : "+str(time.time()-t_debut))
print ("Theta th : theta0 : "+str(4)+" ; theta1 : "+str(3))
print ("Theta skl : theta0 : "+str(round(float(model_skl.intercept_[0]),3))+" ; theta1 : "+str(round(float(model_skl.coef_[0]),3)))
print ("Theta : theta0 : "+str(round(float(theta[0]),3))+" ; theta1 : "+str(round(float(theta[1]),3)))
print ("Erreurs : theta0 : "+str(round(float(theta[0]-4),3))+" ; theta1 : "+str(round(float(theta[1]-3),3)))
print ("Temps : "+str(time.time()-t_debut))

View File

@ -1,6 +1,6 @@
import time, math
import numpy as np
import matplotlib.pyplot as plt
import time, math
###############################################################################
# 02-descente_gradient.py

View File

@ -1,6 +1,7 @@
import numpy as np
import matplotlib.pyplot as plt
import time, math
import numpy as np
import sklearn
import matplotlib.pyplot as plt
###############################################################################
# 03-descente_gradient_stochastique.py
@ -22,6 +23,13 @@ import time, math
# - .dot : produit de matrice
###
###
# Commandes Scikit-Learn :
# - sklearn.linear_model.SGDRegressor : créer un modèle de descente de gradient stochastique
# - .fit : entrainement du modèle
# - .predict : prédiction du modèle
###
###############################################################################
# Initialisation
###############################################################################
@ -125,6 +133,15 @@ for epoq in range (n_epoq):
y_predict=X_new.dot(theta)
donnees_ax.plot(x1_new, y_predict, 'c-', linewidth=0.5)
###############################################################################
# Avec Scikit-Learn (skl)
###############################################################################
model_skl = sklearn.linear_model.SGDRegressor(penalty=None, eta0=0.1) # Modèle descente de gradient stochastique
model_skl.fit(x1, y.ravel()) # Entrainement
# print (model_skl.intercept_[0],model_skl.coef_[0])
y_predict_skl=model_skl.predict(x1_new) # Prédiction
###############################################################################
# Résultats
###############################################################################
@ -132,6 +149,7 @@ for epoq in range (n_epoq):
# Plot des données
donnees_ax.set_title("Données")
donnees_ax.plot(x1_new, y_predict, 'r-', label="Prédictions")
donnees_ax.plot(x1_new, y_predict_skl, 'y-', label="Prédictions - Scikit-Learn")
donnees_ax.set_xlabel(r'$x_1$')
donnees_ax.set_ylabel(r'$y$', rotation=0)
donnees_ax.legend()
@ -144,7 +162,7 @@ model_ax.set_xlabel(r'$\theta_0$')
model_ax.set_ylabel(r'$\theta_1 $', rotation=0)
model_ax.legend()
# Plot du cout
# Plot du coût
couts_ax.set_title("Coûts")
couts_ax.plot(i_list, couts_2d, '.', ls=':', color='c', fillstyle='none', label="Coûts vecteur 2D", markevery=10)
couts_ax.plot(i_list, couts_delta, '.', ls=':', color='r', fillstyle='none', label="Coûts RMSE à la main", markevery=10)
@ -165,7 +183,8 @@ app_ax.set_ylabel(r'$\eta$', rotation=0)
plt.show()
# Performances
print ("Theta th : theta0 : "+str(4)+" ; theta1 : "+str(3))
print ("Theta : theta0 : "+str(round(float(theta[0]),3))+" ; theta1 : "+str(round(float(theta[1]),3)))
print ("Erreurs : theta0 : "+str(round(float(theta[0]-4),3))+" ; theta1 : "+str(round(float(theta[1]-3),3)))
print ("Temps : "+str(time.time()-t_debut))
print ("Theta th : theta0 : "+str(4)+" ; theta1 : "+str(3))
print ("Theta skl : theta0 : "+str(round(float(model_skl.intercept_[0]),3))+" ; theta1 : "+str(round(float(model_skl.coef_[0]),3)))
print ("Theta : theta0 : "+str(round(float(theta[0]),3))+" ; theta1 : "+str(round(float(theta[1]),3)))
print ("Erreurs : theta0 : "+str(round(float(theta[0]-4),3))+" ; theta1 : "+str(round(float(theta[1]-3),3)))
print ("Temps : "+str(time.time()-t_debut))

View File

@ -1,6 +1,6 @@
import time, math
import numpy as np
import matplotlib.pyplot as plt
import time, math
###############################################################################
# 04-descente_gradient_mini-lots.py

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 KiB

After

Width:  |  Height:  |  Size: 377 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 KiB

After

Width:  |  Height:  |  Size: 441 KiB