FerData's picture
Upload 9 files
4147f5e verified
Raw History Blame Contribute Delete
1.21 kB
"""Carga model.safetensors + config.json y predice el precio de casas nuevas.
Uso:
python predict.py
"""
import json
from pathlib import Path
import numpy as np
import torch
from safetensors.torch import load_file
from modelo import RegresionLineal
CARPETA = Path(__file__).parent
# 1. Leer la configuración (entradas y normalización)
config = json.loads((CARPETA / "config.json").read_text(encoding="utf-8"))
media = np.array(config["normalizacion"]["media"], dtype="float32")
desvio = np.array(config["normalizacion"]["desvio"], dtype="float32")
# 2. Crear el modelo vacío y cargarle los pesos entrenados
modelo = RegresionLineal(n_entradas=len(config["entradas"]))
modelo.load_state_dict(load_file(CARPETA / "model.safetensors"))
modelo.eval()
# 3. Predecir: las entradas se normalizan igual que en el entrenamiento
casas_nuevas = np.array([[50, 0, 0], [80, 1, 0], [110, 1, 1]], dtype="float32")
with torch.no_grad():
precios = modelo(torch.tensor((casas_nuevas - media) / desvio)).numpy().ravel()
for casa, precio in zip(casas_nuevas, precios):
print(f"{dict(zip(config['entradas'], casa.astype(int).tolist()))} -> {precio:.1f} miles de US$")