CA-33 / app.py
stevafernandes's picture
Create app.py
7916e73 verified
import gradio as gr
import numpy as np
import pandas as pd
from tensorflow import keras
from sklearn.preprocessing import StandardScaler
model = keras.models.load_model('productivity_model.h5')
scaler = StandardScaler()
scaler.mean_ = np.load('scaler_mean.npy')
scaler.scale_ = np.load('scaler_scale.npy')
feature_columns = open('feature_columns.txt').read().splitlines()
def predict_csv(file):
df = pd.read_csv(file.name)
df = df.drop(columns=['user_id', 'Unnamed: 15', 'productivity_0_100'], errors='ignore').dropna()
df_enc = pd.get_dummies(df, columns=['gender', 'occupation', 'work_mode'], drop_first=True)
df_enc = df_enc.reindex(columns=feature_columns, fill_value=0).astype('float32')
preds = model.predict(scaler.transform(df_enc), verbose=0).flatten().round(2)
result = df.copy()
result['predicted_productivity'] = preds
return result
gr.Interface(
fn=predict_csv,
inputs=gr.File(label="Upload CSV"),
outputs=gr.Dataframe(label="Predictions"),
title="Productivity Predictor",
description="Upload a CSV with the same columns as training data. Returns predicted productivity for each row."
).launch()