| import gradio as gr |
| import numpy as np |
| import pandas as pd |
| import tensorflow as tf |
| from huggingface_hub import hf_hub_download |
| import os |
|
|
| |
| os.environ["CUDA_VISIBLE_DEVICES"] = "-1" |
|
|
| |
| model_path = hf_hub_download( |
| repo_id="Albertwok/btc-price-predictor", |
| filename="btc_price_model.h5", |
| repo_type="model" |
| ) |
| model = tf.keras.models.load_model(model_path, compile=False) |
|
|
| |
| df = pd.read_csv("ENTRENAMIENTO_NORMALIZADO.csv") |
| df_original = pd.read_csv("ENTRENAMIENTO.csv") |
|
|
| |
| df["fecha"] = pd.to_datetime(df_original[["year", "month", "day"]]) |
|
|
| |
| media_y = df_original["btc-usd_close"].mean() |
| std_y = df_original["btc-usd_close"].std() |
|
|
| |
| def predict_price(input_date): |
| try: |
| fecha = pd.to_datetime(input_date) |
| anteriores = df[df["fecha"] < fecha] |
|
|
| if anteriores.empty: |
| return "❌ No hay datos anteriores a esa fecha." |
|
|
| fila = anteriores.iloc[-1] |
|
|
| |
| entrada = fila.drop(["btc-usd_close", "fecha"]).astype(np.float32).to_frame().T |
|
|
| pred_norm = model.predict(entrada)[0][0] |
| pred_real = pred_norm * std_y + media_y |
|
|
| return f"✅ Predicción para {input_date}: ${pred_real:,.2f}" |
|
|
| except Exception as e: |
| return f"❌ Error: {e}" |
|
|
|
|
| |
| demo = gr.Interface( |
| fn=predict_price, |
| inputs=gr.Textbox(label="Introduce una fecha (YYYY-MM-DD)", placeholder="Ejemplo: 2023-12-15"), |
| outputs=gr.Textbox(label="Precio estimado de Bitcoin"), |
| title="📈 Predicción del Precio de Bitcoin", |
| description="Basado en la información económica del día anterior más cercano." |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|