Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
import joblib | |
# Load the saved model | |
model = joblib.load('amazon_access_model.joblib') | |
# Load minimal data just for dropdowns | |
train_df = pd.read_csv('/kaggle/input/amazon-employee-access-challenge/train.csv') | |
def predict_access(resource, mgr_id, role_title): | |
# Common values for other fields | |
input_data = pd.DataFrame([[ | |
resource, | |
mgr_id, | |
train_df['ROLE_ROLLUP_1'].mode()[0], | |
train_df['ROLE_ROLLUP_2'].mode()[0], | |
train_df['ROLE_DEPTNAME'].mode()[0], | |
role_title, | |
train_df['ROLE_FAMILY_DESC'].mode()[0], | |
train_df['ROLE_FAMILY'].mode()[0], | |
train_df['ROLE_CODE'].mode()[0] | |
]], columns=train_df.columns[1:]) # Exclude ACTION column | |
prediction = model.predict(input_data)[0] | |
confidence = model.predict_proba(input_data)[0][prediction] | |
result = "β Access Granted" if prediction == 1 else "β Access Denied" | |
return f"{result} (Confidence: {confidence:.2%})" | |
# Simple interface | |
iface = gr.Interface( | |
fn=predict_access, | |
inputs=[ | |
gr.Dropdown(choices=sorted(train_df['RESOURCE'].unique().tolist())[:100], label="Resource"), | |
gr.Dropdown(choices=sorted(train_df['MGR_ID'].unique().tolist())[:100], label="Manager"), | |
gr.Dropdown(choices=sorted(train_df['ROLE_TITLE'].unique().tolist()), label="Role Title") | |
], | |
outputs=gr.Text(label="Access Decision"), | |
title="Amazon Access Control", | |
theme="soft" | |
) | |
iface.launch() |