mirror of
https://forge.apps.education.fr/phroy/mes-scripts-de-ml.git
synced 2024-01-27 11:30:36 +01:00
Fondamentaux : ajout de Scikit-Learn
This commit is contained in:
parent
001aa52728
commit
c5b0cb3bf5
@ -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))
|
||||
|
@ -1,6 +1,6 @@
|
||||
import time, math
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import time, math
|
||||
|
||||
###############################################################################
|
||||
# 02-descente_gradient.py
|
||||
|
@ -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))
|
||||
|
@ -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 |
Loading…
Reference in New Issue
Block a user