Update app.py
Browse files
app.py
CHANGED
|
@@ -30,7 +30,7 @@ class SimpleStacking:
|
|
| 30 |
|
| 31 |
for model in self.base_models.values():
|
| 32 |
if hasattr(model, "predict_proba"):
|
| 33 |
-
probs = model.predict_proba(X)
|
| 34 |
meta_features.append(probs)
|
| 35 |
else:
|
| 36 |
preds = model.predict(X)
|
|
@@ -42,7 +42,8 @@ class SimpleStacking:
|
|
| 42 |
return self.final_model.predict_proba(meta_X)
|
| 43 |
else:
|
| 44 |
preds = self.final_model.predict(meta_X)
|
| 45 |
-
|
|
|
|
| 46 |
|
| 47 |
|
| 48 |
# ======================
|
|
@@ -90,23 +91,22 @@ def predict_potability(ph, tds, turbidity, temperature):
|
|
| 90 |
"Stacking": stacking_model
|
| 91 |
}
|
| 92 |
|
|
|
|
|
|
|
| 93 |
outputs = {}
|
| 94 |
|
| 95 |
for name, model in models.items():
|
| 96 |
pred = model.predict(scaled)[0]
|
| 97 |
|
| 98 |
if hasattr(model, "predict_proba"):
|
| 99 |
-
|
| 100 |
-
|
| 101 |
else:
|
| 102 |
-
|
| 103 |
|
| 104 |
-
label =
|
| 105 |
|
| 106 |
-
|
| 107 |
-
outputs[name] = f"{label} (Probability: {prob_text})"
|
| 108 |
-
else:
|
| 109 |
-
outputs[name] = label
|
| 110 |
|
| 111 |
return (
|
| 112 |
outputs["XGBoost"],
|
|
|
|
| 30 |
|
| 31 |
for model in self.base_models.values():
|
| 32 |
if hasattr(model, "predict_proba"):
|
| 33 |
+
probs = model.predict_proba(X)
|
| 34 |
meta_features.append(probs)
|
| 35 |
else:
|
| 36 |
preds = model.predict(X)
|
|
|
|
| 42 |
return self.final_model.predict_proba(meta_X)
|
| 43 |
else:
|
| 44 |
preds = self.final_model.predict(meta_X)
|
| 45 |
+
# For simplicity, assume predict gives class, but need probs
|
| 46 |
+
return preds
|
| 47 |
|
| 48 |
|
| 49 |
# ======================
|
|
|
|
| 91 |
"Stacking": stacking_model
|
| 92 |
}
|
| 93 |
|
| 94 |
+
class_names = ["Non-Potable", "Borderline", "Potable"]
|
| 95 |
+
|
| 96 |
outputs = {}
|
| 97 |
|
| 98 |
for name, model in models.items():
|
| 99 |
pred = model.predict(scaled)[0]
|
| 100 |
|
| 101 |
if hasattr(model, "predict_proba"):
|
| 102 |
+
probs = model.predict_proba(scaled)[0]
|
| 103 |
+
prob_str = ", ".join([f"{class_names[i]}: {probs[i]:.4f}" for i in range(3)])
|
| 104 |
else:
|
| 105 |
+
prob_str = "N/A"
|
| 106 |
|
| 107 |
+
label = class_names[pred]
|
| 108 |
|
| 109 |
+
outputs[name] = f"{label} (Probabilities: {prob_str})"
|
|
|
|
|
|
|
|
|
|
| 110 |
|
| 111 |
return (
|
| 112 |
outputs["XGBoost"],
|