diff --git a/fondamentaux/01-regression_lineaire.py b/fondamentaux/01-regression_lineaire.py index a5ba936..d09ad01 100644 --- a/fondamentaux/01-regression_lineaire.py +++ b/fondamentaux/01-regression_lineaire.py @@ -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)) diff --git a/fondamentaux/02-descente_gradient.py b/fondamentaux/02-descente_gradient.py index 723ef65..599f876 100644 --- a/fondamentaux/02-descente_gradient.py +++ b/fondamentaux/02-descente_gradient.py @@ -1,6 +1,6 @@ +import time, math import numpy as np import matplotlib.pyplot as plt -import time, math ############################################################################### # 02-descente_gradient.py diff --git a/fondamentaux/03-descente_gradient_stochastique.py b/fondamentaux/03-descente_gradient_stochastique.py index 5116e83..62e1795 100644 --- a/fondamentaux/03-descente_gradient_stochastique.py +++ b/fondamentaux/03-descente_gradient_stochastique.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)) diff --git a/fondamentaux/04-descente_gradient_mini-lots.py b/fondamentaux/04-descente_gradient_mini-lots.py index 1eb421f..d6cd359 100644 --- a/fondamentaux/04-descente_gradient_mini-lots.py +++ b/fondamentaux/04-descente_gradient_mini-lots.py @@ -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 diff --git a/fondamentaux/img/01-regression_lineaire.png b/fondamentaux/img/01-regression_lineaire.png index 659fec3..44200bb 100644 Binary files a/fondamentaux/img/01-regression_lineaire.png and b/fondamentaux/img/01-regression_lineaire.png differ diff --git a/fondamentaux/img/03-descente_gradient_stochastique.png b/fondamentaux/img/03-descente_gradient_stochastique.png index 184ce90..b591d44 100644 Binary files a/fondamentaux/img/03-descente_gradient_stochastique.png and b/fondamentaux/img/03-descente_gradient_stochastique.png differ