-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
37 lines (24 loc) · 1.01 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import numpy as np
# définir le modèle
def model(X, theta):
return X.dot(theta)
#définir la fonction coût
def cost_function(X, y, theta):
m = len(y)
return 1/(2*m) * np.sum((model(X, theta) - y)**2)
# définir la fonction de gradient
def grad(X, y, theta):
m = len(y)
return 1/m * X.T.dot(model(X, theta) - y)
# Définir la descente de gradient
def gradient_descent(X, y, theta, learning_rate, n_iterations):
cost_history = np.zeros(n_iterations) # création d'un tableau de stockage pour enregistrer l'évolution du Cout du modele
for i in range(0, n_iterations):
theta = theta - learning_rate * grad(X, y, theta) # mise a jour du parametre theta (formule du gradient descent)
cost_history[i] = cost_function(X, y, theta) # on enregistre la valeur du Cout au tour i dans cost_history[i]
return theta, cost_history
# Evaluation du modèle
def coef_determination(y, pred):
u = ((y - pred)**2).sum()
v = ((y - y.mean())**2).sum()
return 1 - u/v