Está en la página 1de 3

12/2/2021 Ejemplo_costo_regresión_lineal.

ipynb - Colaboratory

Taller regresión lineal


link de entrega: https://colab.research.google.com/drive/1AKYrelHdoWqRHxLjsXcns5lgNS6AjR4q?
usp=sharing

import numpy as np
import scipy
np.random.seed(seed=1236543)
N=100
car=np.array([1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0])
et=np.array([0.169610272, 0.283395813, 0.386358738, 0.470227872, 0.433281294, 0.600267648, 0.
par=np.array([1.3, 1.5])
def costo(par,car,et):
n=len(car)
o0=par[0]
o1=par[1]
J=(1/(2*n)*np.sum(np.power(((o0+o1*car)-(et)),2)))
return J

print (costo(par,car,et))

19.979853726253317
Código Texto
car=np.array([1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0])
et=np.array([0.169610272, 0.283395813, 0.386358738, 0.470227872, 0.433281294, 0.600267648, 0.
# Aquí inicia nuestro algoritomo de grid search
# for 1 para iterar en o0
resultado=[]
Jfinal=J
for o0 in np.arange(0,0.1,0.01): #0.046 es el mejor
# for 2 para iterar en o1
for o1 in np.arange(0,0.3,0.01): #0.157 es el mejor
# Guardamos el resultado y los parámetros con los que obtuvimos ese resultado
par=(o0,o1)
J=costo(par,car,et)
if Jfinal >= J:
Jfinal=J
resultado.append(par)
# Miramos cual es el conjunto de parámetros con el menor costo

print("El menor costo es:",Jfinal,"\nLos parámetros son:",resultado[-1])

El menor costo es: 0.001041726904041055


Los parámetros son: (0.04, 0.16)

# Uniforme de 0 a 0 1
https://colab.research.google.com/drive/1AKYrelHdoWqRHxLjsXcns5lgNS6AjR4q#scrollTo=6Q9t6etwQIcM&printMode=true 1/3
12/2/2021 Ejemplo_costo_regresión_lineal.ipynb - Colaboratory
# Uniforme de 0 a 0.1
result=[]
Jfinal=J
from scipy.stats import uniform
mean, var, skew, kurt=uniform.stats(moments='mvsk')
a = uniform.rvs(loc=0,scale=0.1,size=N)
# Uniforme de 0 a 0.3
b = uniform.rvs(loc=0,scale=0.3,size=N)
for o0 in a:
for o1 in b:
par=(o0,o1)
J=costo(par,car,et)
if Jfinal >= J:
Jfinal=J
result.append(par)

print("El menor costo es:",Jfinal,"\nLos parámetros son:",result[-1])

El menor costo es: 0.001023074509079094


Los parámetros son: (0.048031300455491144, 0.15665743334757673)

Conclusiones
1. La función uniforme es muy útil para muestrear, ya que tiene intervalos de la misma longitud y
todos ellos tienen la misma probabilidad de ocurrir, esto permite que el resultado sea lo más
apegado a la realidad posible y no esté cargado hacia un valor en especí co.
2. Es muy útil cambiar la semilla cada vez que se realice el experimento, ya que esto permite
que los resultados varíen y de esta forma obtener el número más cercano posible al que se
necesita.
3. Pienso que la manera más e ciente de hacerlo es ir probando intervalos diferentes e irlos
moviendo de acuerdo a los resultados obtenidos, al obtener un resultado satisfacorio,
disminuiría el rango de prueba sin afectar el número de muestras, de esta forma buscar un
valor útil para el experimento.

https://colab.research.google.com/drive/1AKYrelHdoWqRHxLjsXcns5lgNS6AjR4q#scrollTo=6Q9t6etwQIcM&printMode=true 2/3
12/2/2021 Ejemplo_costo_regresión_lineal.ipynb - Colaboratory

https://colab.research.google.com/drive/1AKYrelHdoWqRHxLjsXcns5lgNS6AjR4q#scrollTo=6Q9t6etwQIcM&printMode=true 3/3

También podría gustarte