shahinurislamkowser's picture
Upload handler.py
afe1ea1 verified
import os
import pandas as pd
import xgboost as xgb
from typing import Dict, List, Any
class EndpointHandler:
def __init__(self, path=""):
self.model = xgb.XGBClassifier()
self.model.load_model(os.path.join(path, "xgboost_model.json"))
self.features = [
'Speed (RPM)', 'Torque (Nm)', 'Flux (Wb)', 'Voltage (V)', 'Current (A)',
'Power (W)', 'Kp', 'Ki', 'Kd', 'PID Gain Adjustment',
'Speed Overshoot (RPM)', 'Torque Ripple (Nm)', 'Flux Ripple (Wb)',
'Control Error (RPM)', 'ISE', 'Stabilization Time (s)',
'Load Disturbance (Nm)', 'Internal Disturbance (Friction, Temp)',
'Simulation Step (s)', 'Optimization Iteration'
]
def __call__(self, data: Any) -> List[Dict[str, Any]]:
inputs = data.get("inputs", data)
if isinstance(inputs, dict): inputs = [inputs]
df = pd.DataFrame(inputs)
for col in self.features:
if col not in df.columns: df[col] = 0
df = df[self.features]
preds = self.model.predict(df)
probs = self.model.predict_proba(df)[:, 1]
return [{"label": "Success" if int(p) == 1 else "Failure", "score": float(pr)} for p, pr in zip(preds, probs)]