Código de Python - Repaso-Descen-Grad-Batch.

Imágen de perfil

Repaso-Descen-Grad-Batch.gráfica de visualizaciones


Python

Publicado el 24 de Octubre del 2023 por Hilario (123 códigos)
255 visualizaciones desde el 24 de Octubre del 2023
*****************************************************************************************************************
Repaso-Des-Gra-Batch-Aula-E.28-OCT-24.py
******************************************************************************************************************
Realizar un descenso de gradiente tipo Batch, en código python, desde el punto x=8.03, y=5.846. De la funcion f(x)=x**2/x+3. Cuya derivada es: f'(x)=x+3. Se incluye grafica de costos MSE, y grafica de la parábola, con los valores del descenso, marcado en puntos sobre la misma.

Requerimientos

Código realizado sobre una plataforma Linux, en concreto:
Ubuntu 20.04.6 LTS.
Editado con sublime text.
Si se realiza sobre Linux, deberán estar cargadas las librerias:
import numpy as np
import matplotlib.pyplot as plt.
--------------------------------------------------------------------------------------
Ejecución, bajo consola Linux:
python3 Repaso-Des-Gra-Batch-Aula-E.28-OCT-24.py

************************************************************************************
Si se quiere se puede editar y ejecutar con Google Colab, con este formato:

Repaso-Des-Gra-Batch-Aula-E.28-OCT-24.ipynb

V-0

Publicado el 24 de Octubre del 2023gráfica de visualizaciones de la versión: V-0
256 visualizaciones desde el 24 de Octubre del 2023
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

desmos-graph
descarga
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import numpy as np
import matplotlib.pyplot as plt
 
# Definir la función y su derivada
def f(x):
    return  x**2 / (x + 3)
 
 
def df(x):
    return (x + 3)
 
# Parámetros del descenso de gradiente
learning_rate = 0.1
num_epochs = 18
initial_x = 8.03
initial_y = f(initial_x)
 
x_values = [initial_x]
costs = [initial_y]
 
# Realizar el descenso de gradiente
for _ in range(num_epochs):
    x = x_values[-1]
    gradient = df(x)
    x_new = x - learning_rate * gradient
    y_new = f(x_new)
 
    x_values.append(x_new)
    costs.append(y_new)
 
print("*******************************")
print("Historial de Costo:")
for index, misxvalues in enumerate(x_values):
  print(f'Iteración {index} valores de x:{misxvalues}')
print("*******************************")
print("*******************************")
print("Historial de Costo:")
for index, miscostos in enumerate(costs):
  print(f'Iteración {index}:{miscostos}')
print("*******************************")
 
# Crear dos gráficos independientes
plt.figure(figsize=(14, 8))
 
# Gráfica de la función de costo (MSE)
plt.subplot(1, 2, 1)
plt.plot(range(num_epochs + 1), costs, marker='o')
plt.xlabel('Época')
plt.ylabel('Costo (MSE)')
plt.title('Costo MSE en el Descenso de Gradiente')
 
# Gráfica de la parabola
plt.subplot(1, 2, 2)
x_range = np.linspace(-10, 10, 400)
plt.plot(x_range, f(x_range), label='f(x) = x^2 / (x + 3)')
plt.scatter(x_values, costs, c='red', label='Descenso de gradiente')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.ylim([-5, 30])  # Ajustar el rango del eje y
plt.legend()
plt.title('Descenso de Gradiente en la Función Parabólica')
 
plt.tight_layout()
 
plt.show()
 
"""
Parámetros que se deberían imprimir por Consola,
aparte de las gráficas.
*******************************
Historial de Costo:
Iteración 0 valores de x:8.03
Iteración 1 valores de x:7.937397610900462
Iteración 2 valores de x:7.844921017063485
Iteración 3 valores de x:7.752573277151892
Iteración 4 valores de x:7.660357543504276
Iteración 5 valores de x:7.568277065466035
Iteración 6 valores de x:7.4763351928479524
Iteración 7 valores de x:7.384535379517022
Iteración 8 valores de x:7.292881187124325
Iteración 9 valores de x:7.201376288974853
Iteración 10 valores de x:7.110024474044277
Iteración 11 valores de x:7.018829651147763
Iteración 12 valores de x:6.927795853265975
Iteración 13 valores de x:6.836927242033501
Iteración 14 valores de x:6.746228112394946
Iteración 15 valores de x:6.6557028974339865
Iteración 16 valores de x:6.565356173380653
Iteración 17 valores de x:6.475192664802085
Iteración 18 valores de x:6.385217249981943
*******************************
*******************************
Historial de Costo:
Iteración 0:5.8459564823209424
Iteración 1:5.760262456833318
Iteración 2:5.674802579671395
Iteración 3:5.589582220780676
Iteración 4:5.504606900364169
Iteración 5:5.419882293475179
Iteración 6:5.335414234738878
Iteración 7:5.251208723203833
Iteración 8:5.167271927324296
Iteración 9:5.083610190073743
Iteración 10:5.000230034189649
Iteración 11:4.917138167549073
Iteración 12:4.834341488673984
Iteración 13:4.751847092364681
Iteración 14:4.66966227545892
Iteración 15:4.587794542713561
Iteración 16:4.506251612804648
Iteración 17:4.4250414244407885
Iteración 18:4.344172142583637
"""



Comentarios sobre la versión: V-0 (0)


No hay comentarios
 

Comentar la versión: V-0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7451