| | 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() |
| |
|