Código de Python - Descenso gradiente lineal múltiple

Imágen de perfil

Descenso gradiente lineal múltiplegráfica de visualizaciones


Python

Publicado el 9 de Octubre del 2023 por Hilario (123 códigos)
423 visualizaciones desde el 9 de Octubre del 2023
El descenso de gradiente en el contexto de la regresión lineal múltiple se refiere a un algoritmo de optimización utilizado para encontrar los valores óptimos de los coeficientes de una función de regresión lineal que se ajuste mejor a un conjunto de datos con múltiples características (variables independientes). El objetivo es minimizar una función de costo, generalmente el error cuadrático medio (MSE, por sus siglas en inglés), que mide la diferencia entre las predicciones del modelo y los valores reales.

A continuación, se explica cómo funciona el descenso de gradiente en el contexto de la regresión lineal múltiple:

Inicialización: Se inician los coeficientes del modelo con valores aleatorios o ceros.

Cálculo de las predicciones: Se utilizan los coeficientes actuales para hacer predicciones sobre el conjunto de datos de entrenamiento. Esto implica multiplicar cada característica de entrada por su correspondiente coeficiente y sumar todos estos productos para obtener una predicción.

Cálculo del error: Se calcula la diferencia entre las predicciones y los valores reales (etiquetas) del conjunto de entrenamiento. Esto da como resultado un vector de errores.

Cálculo del gradiente: Se calcula el gradiente de la función de costo con respecto a los coeficientes. El gradiente indica la dirección y la magnitud en la que los coeficientes deben actualizarse para minimizar la función de costo. Para el MSE, el gradiente se calcula como la derivada de la función de costo con respecto a cada coeficiente.

Actualización de coeficientes: Se actualizan los coeficientes multiplicándolos por una tasa de aprendizaje (learning rate) y restando el gradiente. Esta actualización mueve los coeficientes en la dirección que reduce el costo.

Iteración: Los pasos 2-5 se repiten iterativamente durante un número fijo de veces (épocas) o hasta que el costo converja a un valor mínimo.

Resultado final: Después de que el algoritmo haya convergido, los coeficientes resultantes se utilizan como los coeficientes óptimos para el modelo de regresión lineal múltiple.

El proceso se repite hasta que se alcance un criterio de convergencia o se haya realizado un número predeterminado de iteraciones. El descenso de gradiente es una técnica fundamental en el aprendizaje automático y la optimización, y se utiliza para ajustar los parámetros de los modelos de manera que se minimice la diferencia entre las predicciones y los valores reales.

Requerimientos

Descenso de gradiente lineal múltiple.
*********************************************
Aula-B.88.py
Ejecución:
python3 Aula-B.88.py
***************************
Realizado bajo plataforma Linux.
Ubuntu 20.04.6 LTS.
Editado en sublime Text.
También se puede editar y
ejecutar con Google Colab.
"""

V-0

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

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
"""
Descenso de gradiente lineal múltiple.
*************************************
Aula-B.88.py
Ejecución:
python3 Aula-B.88.py
***************************
Realizado bajo plataforma Linux.
Ubuntu 20.04.6 LTS.
Editado en sublime Text.
También se puede editar y
ejecutar con Google Colab.
"""
 
import numpy as np
import matplotlib.pyplot as plt
 
# Datos de ejemplo (puedes reemplazarlos con tus propios datos)
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])  # Características (variables independientes)
y = np.array([3, 5, 7, 9])  # Variable objetivo (variable dependiente)
 
# Hiperparámetros
learning_rate = 0.01
epochs = 10
 
# Inicialización de parámetros
m, n = X.shape
theta = np.zeros(n)  # Inicialización de los coeficientes
 
# Almacenar los valores de costo en cada iteración
cost_history = []
 
# Descenso de gradiente
for epoch in range(epochs):
    # Calcular la predicción
    y_pred = np.dot(X, theta)
 
    # Calcular el error
    error = y_pred - y
 
    # Calcular el costo MSE
    cost = np.sum(error ** 2) / (2 * m)
    cost_history.append(cost)
 
    # Actualizar los coeficientes usando el gradiente
    gradient = np.dot(X.T, error) / m
    theta -= learning_rate * gradient
 
 
print("******************************")
print("Historial de Costos:")
for historia in cost_history:
  print(historia)
print("******************************")
# Imprimir los coeficientes finales
print('Coeficientes theta0, y theta1, finales:')
print(theta)
print("******************************")
 
# Graficar la evolución del costo MSE
plt.figure(figsize=(12,6))
plt.plot(range(epochs), cost_history,color='black',marker='o',markerfacecolor='red')
plt.xlabel('Iteraciones')
plt.ylabel('Costo MSE')
plt.title('Evolución del Costo MSE durante el Descenso de Gradiente')
plt.show()
 
"""
Salida  por consola linux.
******************************
Historial de Costos:
20.5
12.813862499999999
8.0096915503125
5.006875099664601
3.1299835948077153
1.9568441746632217
1.223580430841411
0.7652581259143213
0.478786184624311
0.2997281990820337
******************************
Coeficientes theta0, y theta1, finales:
[0.75653773 1.01476176]
******************************
"""



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/s7444