Spaces:
Runtime error
Runtime error
File size: 2,092 Bytes
11118c6 b9fb926 11118c6 69d9c01 11118c6 b9fb926 69d9c01 11118c6 69d9c01 11118c6 69d9c01 11118c6 69d9c01 11118c6 69d9c01 11118c6 69d9c01 11118c6 d63d73a 11118c6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import gradio as gr
import torch
from torch import nn
import numpy as np
import pandas as pd
from utils import compute_features
dataset = pd.read_csv("cleaned_df_noindex.csv")
df_amenities = pd.read_csv("df_amenities.csv")
class NegBinomialModel(nn.Module):
def __init__(self, in_features):
super().__init__()
self.linear = nn.Linear(in_features, 1)
self.log_alpha = nn.Parameter(torch.tensor(0.0))
def forward(self, x):
eta = self.linear(x)
mu = torch.exp(eta).squeeze(-1)
alpha = torch.exp(self.log_alpha)
return mu, alpha
def negbinom_loss(y, mu, alpha):
log_prob = (
torch.lgamma(y + 1/alpha)
- torch.lgamma(1/alpha)
- torch.lgamma(y + 1)
+ (1/alpha) * torch.log(1 / (1 + alpha * mu))
+ y * torch.log((alpha * mu) / (1 + alpha * mu))
)
return -torch.mean(log_prob)
model = NegBinomialModel(len(dataset.columns)-2)
model.load_state_dict(torch.load("model_weights.pt"))
model.eval()
# ======== Prediction Function ========
def predict_score(lat, lon):
# Convert input to tensor
inputs = torch.tensor([[lat, lon]], dtype=torch.float32)
# Get model output
with torch.no_grad():
outputs = model(inputs).numpy().flatten()
# Unpack into respective values
mu_pred, alpha = outputs
score = (1 * np.abs(mu_pred + 0.1)) * 100
# You can apply any post-processing here
return {
"Score": round(float(score), 3),
"Num Banks": round(float(mu_pred), 3),
# "Normal Score": round(float(normal_score), 3),
}
# ======== Gradio Interface ========
interface = gr.Interface(
fn=predict_score,
inputs=[
gr.Number(label="Latitude"),
gr.Number(label="Longitude"),
],
outputs=[
gr.Number(label="Score"),
gr.Number(label="Num Banks"),
# gr.Number(label="Normal Score"),
],
title="Bank Location Scoring Model",
description="Enter latitude and longitude to get the predicted score, number of banks, and normalized score.",
)
interface.launch()
|