rr / app.py
mohamed20003's picture
Update app.py
db8a129 verified
import gradio as gr
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
import io
# ------------------------
# تدريب الموديل الأساسي
# ------------------------
df_train = pd.DataFrame({
'EmployeeID': [101, 102, 103, 104, 105, 106],
'PerformanceScore': [90, 85, 95, 80, 88, 92],
'ProjectsCompleted': [5, 6, 7, 4, 6, 5],
'Attendance': [98, 92, 95, 90, 97, 96],
'EmployeeOfTheMonth': [0, 0, 1, 0, 0, 0]
})
X_train = df_train[['PerformanceScore', 'ProjectsCompleted', 'Attendance']]
y_train = df_train['EmployeeOfTheMonth']
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
model = LogisticRegression(class_weight='balanced')
model.fit(X_train_scaled, y_train)
# ------------------------
# دالة التنبؤ
# ------------------------
def predict_employee(file):
df_new = pd.read_excel(file)
X_new_scaled = scaler.transform(df_new[['PerformanceScore', 'ProjectsCompleted', 'Attendance']])
probs = model.predict_proba(X_new_scaled)[:, 1]
df_new['ProbabilityOfBeingBest'] = probs
best_employee = df_new.loc[df_new['ProbabilityOfBeingBest'].idxmax()]
return {
"Best Employee ID": int(best_employee['EmployeeID']),
"Probability": float(best_employee['ProbabilityOfBeingBest'])
}
# ------------------------
# واجهة Gradio
# ------------------------
iface = gr.Interface(
fn=predict_employee,
inputs=gr.File(label="Upload Excel File (.xlsx)"),
outputs="json",
title="Employee of the Month Predictor",
description="Upload an Excel file containing 'EmployeeID', 'PerformanceScore', 'ProjectsCompleted', and 'Attendance' columns to find the best employee."
)
iface.launch(share=True)