Ajustar un modelo a datos en Python
curve_fit encuentra los parámetros, y la covarianza da su error.
import numpy as np
from scipy import optimize
def learning(x, techo, tasa):
return techo * (1 - np.exp(-tasa * x))
rng = np.random.default_rng(6)
dias = np.arange(1, 31)
observed = learning(dias, 120, 0.12) + rng.normal(0, 3, size=30)
params, covariance = optimize.curve_fit(learning, dias, observed,
p0=[100.0, 0.1])
fallas = np.sqrt(np.diag(covariance))
print(params.round(3), fallas.round(3))
residuos = observed - learning(dias, *params)
print(round(np.std(residuos), 3))
Cómo funciona
- El primer argumento del modelo es x; el resto son parámetros.
p0es la conjetura inicial; una mala puede no converger.- La diagonal de la covarianza da los errores a una sigma.
Palabras clave y builtins usados aquí
asdefprintreturnround
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 481
- Tokens
- 153
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 83 segundos.
Paso 3 de 4 en Optimización; paso 12 de 23 en Computación científica con SciPy.