housing / app.py
misterkilgore's picture
Upload 4 files
62af78c verified
import gradio as gr
import pandas as pd
import numpy as np
import joblib
import os
# Carica il modello
model = joblib.load('house_price_model.joblib')
# Carica i nomi delle feature
with open('feature_names.txt', 'r') as f:
feature_names = [line.strip() for line in f.readlines()]
def predict_prices(csv_file):
# Leggi il file CSV
df = pd.read_csv(csv_file.name)
# Verifica che il file contenga le colonne necessarie
missing_cols = [col for col in feature_names if col not in df.columns]
if missing_cols:
return f"Errore: Il file CSV manca delle seguenti colonne: {', '.join(missing_cols)}"
# Seleziona solo le colonne necessarie nell'ordine corretto
input_data = df[feature_names]
# Fai la previsione
predictions = model.predict(input_data)
# Aggiungi le previsioni al DataFrame originale
df['predicted_price'] = predictions
# Salva il risultato in un nuovo file CSV
result_path = "predictions_result.csv"
df.to_csv(result_path, index=False)
return result_path
# Crea l'interfaccia Gradio
iface = gr.Interface(
fn=predict_prices,
inputs=gr.File(label="Carica un file CSV con le caratteristiche delle case"),
outputs=gr.File(label="Scarica i risultati"),
title="Previsione Prezzi Case",
description=f"Carica un file CSV contenente le seguenti colonne: {', '.join(feature_names)}. "
"Il modello prevederà il prezzo per ogni casa e restituirà un nuovo file CSV con i risultati."
)
# Avvia l'app
iface.launch()