import pandas
!pip install statsmodels
# Creamos un diccionario de los datos para el talle de botas y de arnes en cm
data = {
'boot_size' : [ 39, 38, 37, 39, 38, 35, 37, 36, 35, 40,
40, 36, 38, 39, 42, 42, 36, 36, 35, 41,
42, 38, 37, 35, 40, 36, 35, 39, 41, 37,
35, 41, 39, 41, 42, 42, 36, 37, 37, 39,
42, 35, 36, 41, 41, 41, 39, 39, 35, 39
],
'harness_size': [ 58, 58, 52, 58, 57, 52, 55, 53, 49, 54,
59, 56, 53, 58, 57, 58, 56, 51, 50, 59,
59, 59, 55, 50, 55, 52, 53, 54, 61, 56,
55, 60, 57, 56, 61, 58, 53, 57, 57, 55,
60, 51, 52, 56, 55, 57, 58, 57, 51, 59
]
}
# Convertimos en una tabla con pandas
dataset = pandas.DataFrame(data)
# Print
dataset
# Cargamos la libreria encargada de hacer el entrenamiento
import statsmodels.formula.api as smf
# Primero definimos la formula usando una sintaxis especial
# Esto significa que el talle de las botas se basa en el talla del arnes
formula = "boot_size ~ harness_size"
# Creamos un modelo, pero todavia no lo entrenamos
model = smf.ols(formula = formula, data = dataset)
# El modelo todavia no tiene parametros definidos todavia
if not hasattr(model, 'params'):
print("Modelo seleccionado, pero todavia no tiene parametros definidos. Necesitamos entrenarlo")
import graphing
# Entrenamos el modelo para que cree una linea que se ajuste a nuestros datos.
fitted_model = model.fit()
# Mostramos la informacion sobre que nuestro modelo fue ajustado
print("Los siguientes parametos de nuestro modelo fueron encontrados:\n" +
f"Pendiente: {fitted_model.params[1]}\n"+
f"Intercepcion: {fitted_model.params[0]}")
import graphing
# Mostramos neUstro resultado en forma grafica
graphing.scatter_2D(dataset, label_x="harness_size",
label_y="boot_size",
trendline=lambda x: fitted_model.params[1] * x + fitted_model.params[0]
)
# Definimos los talles de arneses que estamos interesado
harness_size = { 'harness_size' : [52.5] }
# Usamos el modelo para predecir cual es el talle de bota que se ajusta a dicho talle de arnes
approximate_boot_size = fitted_model.predict(harness_size)
# Mostrmos el resultado
print("Talle aproximado de bota: ")
print(approximate_boot_size[0])