import joblib import numpy as np # تحميل الموديل مرة واحدة def load_model(): model = joblib.load("RandomForestRegressor.joblib") le_airports = joblib.load("le_airports.joblib") return model, le_airports model, le_airports = load_model() def predict(inputs): try: data = inputs["data"] # تنظيف البيانات origin = data["Origin"][0].upper().strip() dest = data["Dest"][0].upper().strip() # Encoding origin_encoded = le_airports.transform([origin])[0] dest_encoded = le_airports.transform([dest])[0] # تجهيز الفيتشرز features = np.array([[ data["Year"][0], data["Quarter"][0], data["Month"][0], data["DayofMonth"][0], origin_encoded, dest_encoded, data["CRSDepTime"][0], data["DepTime"][0], data["DepDelayMinutes"][0], data["DepDel15"][0], data["time"][0], data["tempF"][0], data["WindChillF"][0], data["humidity"][0], data["windspeedKmph"][0], data["WindGustKmph"][0], data["winddirDegree"][0], data["weatherCode"][0], data["precipMM"][0], data["visibility"][0], data["pressure"][0], data["cloudcover"][0], data["DewPointF"][0] ]]) # التنبؤ pred = float(model.predict(features)[0]) pred = max(0.0, round(pred, 1)) status = "Delayed" if pred >= 15 else "On Time" return { "predicted_delay_minutes": pred, "status": status } except Exception as e: return {"error": str(e)}