Mahmoud-Bayoumi0 commited on
Commit
3848151
·
verified ·
1 Parent(s): 48a74ec

Update inference.py

Browse files
Files changed (1) hide show
  1. inference.py +37 -48
inference.py CHANGED
@@ -1,13 +1,12 @@
1
  import joblib
2
  import numpy as np
3
 
4
- # تحميل الموديل والـ encoder مرة واحدة
5
  def load_model():
6
  model = joblib.load("RandomForestRegressor.joblib")
7
  le_airports = joblib.load("le_airports.joblib")
8
  return model, le_airports
9
 
10
-
11
  model, le_airports = load_model()
12
 
13
 
@@ -15,61 +14,51 @@ def predict(inputs):
15
  try:
16
  data = inputs["data"]
17
 
18
- # استخراج القيم
19
- Year = data["Year"][0]
20
- Quarter = data["Quarter"][0]
21
- Month = data["Month"][0]
22
- DayofMonth = data["DayofMonth"][0]
23
-
24
- Origin = data["Origin"][0].upper().strip()
25
- Dest = data["Dest"][0].upper().strip()
26
-
27
- CRSDepTime = data["CRSDepTime"][0]
28
- DepTime = data["DepTime"][0]
29
- DepDelayMinutes = data["DepDelayMinutes"][0]
30
- DepDel15 = data["DepDel15"][0]
31
-
32
- time = data["time"][0]
33
- tempF = data["tempF"][0]
34
- WindChillF = data["WindChillF"][0]
35
- humidity = data["humidity"][0]
36
- windspeedKmph = data["windspeedKmph"][0]
37
- WindGustKmph = data["WindGustKmph"][0]
38
- winddirDegree = data["winddirDegree"][0]
39
- weatherCode = data["weatherCode"][0]
40
- precipMM = data["precipMM"][0]
41
- visibility = data["visibility"][0]
42
- pressure = data["pressure"][0]
43
- cloudcover = data["cloudcover"][0]
44
- DewPointF = data["DewPointF"][0]
45
 
46
  # Encoding
47
- origin_encoded = le_airports.transform([Origin])[0]
48
- dest_encoded = le_airports.transform([Dest])[0]
49
 
50
- # تجهيز البيانات
51
- input_features = np.array([[
52
- Year, Quarter, Month, DayofMonth,
53
- origin_encoded, dest_encoded,
54
- CRSDepTime, DepTime, DepDelayMinutes, DepDel15,
55
- time, tempF, WindChillF, humidity,
56
- windspeedKmph, WindGustKmph, winddirDegree,
57
- weatherCode, precipMM, visibility,
58
- pressure, cloudcover, DewPointF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  ]])
60
 
61
- # Prediction
62
- predicted_minutes = float(model.predict(input_features)[0])
63
- predicted_minutes = max(0.0, round(predicted_minutes, 1))
64
 
65
- status = "Delayed" if predicted_minutes >= 15 else "On Time"
66
 
67
  return {
68
- "predicted_delay_minutes": predicted_minutes,
69
  "status": status
70
  }
71
 
72
  except Exception as e:
73
- return {
74
- "error": str(e)
75
- }
 
1
  import joblib
2
  import numpy as np
3
 
4
+ # تحميل الموديل مرة واحدة
5
  def load_model():
6
  model = joblib.load("RandomForestRegressor.joblib")
7
  le_airports = joblib.load("le_airports.joblib")
8
  return model, le_airports
9
 
 
10
  model, le_airports = load_model()
11
 
12
 
 
14
  try:
15
  data = inputs["data"]
16
 
17
+ # تنظيف البيانات
18
+ origin = data["Origin"][0].upper().strip()
19
+ dest = data["Dest"][0].upper().strip()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  # Encoding
22
+ origin_encoded = le_airports.transform([origin])[0]
23
+ dest_encoded = le_airports.transform([dest])[0]
24
 
25
+ # تجهيز الفيتشرز
26
+ features = np.array([[
27
+ data["Year"][0],
28
+ data["Quarter"][0],
29
+ data["Month"][0],
30
+ data["DayofMonth"][0],
31
+ origin_encoded,
32
+ dest_encoded,
33
+ data["CRSDepTime"][0],
34
+ data["DepTime"][0],
35
+ data["DepDelayMinutes"][0],
36
+ data["DepDel15"][0],
37
+ data["time"][0],
38
+ data["tempF"][0],
39
+ data["WindChillF"][0],
40
+ data["humidity"][0],
41
+ data["windspeedKmph"][0],
42
+ data["WindGustKmph"][0],
43
+ data["winddirDegree"][0],
44
+ data["weatherCode"][0],
45
+ data["precipMM"][0],
46
+ data["visibility"][0],
47
+ data["pressure"][0],
48
+ data["cloudcover"][0],
49
+ data["DewPointF"][0]
50
  ]])
51
 
52
+ # التنبؤ
53
+ pred = float(model.predict(features)[0])
54
+ pred = max(0.0, round(pred, 1))
55
 
56
+ status = "Delayed" if pred >= 15 else "On Time"
57
 
58
  return {
59
+ "predicted_delay_minutes": pred,
60
  "status": status
61
  }
62
 
63
  except Exception as e:
64
+ return {"error": str(e)}