Spaces:
Sleeping
Sleeping
Nashid-Noor commited on
Commit ·
ac96642
1
Parent(s): 9422ce5
Fix UI inference crash due to missing columns
Browse files- src/app.py +7 -0
- src/predict.py +7 -0
src/app.py
CHANGED
|
@@ -139,6 +139,13 @@ def predict_risk(
|
|
| 139 |
df = pd.DataFrame([record])
|
| 140 |
from src.features import engineer_features
|
| 141 |
df = engineer_features(df)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
X = predictor.preprocessor.transform(df)
|
| 143 |
shap_factors = explain_prediction(
|
| 144 |
X, model=predictor.model, feature_names=predictor.feature_names, top_k=8
|
|
|
|
| 139 |
df = pd.DataFrame([record])
|
| 140 |
from src.features import engineer_features
|
| 141 |
df = engineer_features(df)
|
| 142 |
+
|
| 143 |
+
# Ensure all columns expected by the preprocessor are present (fill with NaN if missing)
|
| 144 |
+
expected_cols = getattr(predictor.preprocessor, "feature_names_in_", [])
|
| 145 |
+
for col in expected_cols:
|
| 146 |
+
if col not in df.columns:
|
| 147 |
+
df[col] = np.nan
|
| 148 |
+
|
| 149 |
X = predictor.preprocessor.transform(df)
|
| 150 |
shap_factors = explain_prediction(
|
| 151 |
X, model=predictor.model, feature_names=predictor.feature_names, top_k=8
|
src/predict.py
CHANGED
|
@@ -55,6 +55,13 @@ class GridRiskPredictor:
|
|
| 55 |
labels : np.ndarray – binary prediction at 0.5 threshold
|
| 56 |
"""
|
| 57 |
df = engineer_features(df)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
X = self.preprocessor.transform(df)
|
| 59 |
probs = self.model.predict_proba(X)[:, 1]
|
| 60 |
labels = (probs >= 0.5).astype(int)
|
|
|
|
| 55 |
labels : np.ndarray – binary prediction at 0.5 threshold
|
| 56 |
"""
|
| 57 |
df = engineer_features(df)
|
| 58 |
+
|
| 59 |
+
# Ensure that all feature names exist in df
|
| 60 |
+
expected_cols = getattr(self.preprocessor, "feature_names_in_", [])
|
| 61 |
+
for col in expected_cols:
|
| 62 |
+
if col not in df.columns:
|
| 63 |
+
df[col] = np.nan
|
| 64 |
+
|
| 65 |
X = self.preprocessor.transform(df)
|
| 66 |
probs = self.model.predict_proba(X)[:, 1]
|
| 67 |
labels = (probs >= 0.5).astype(int)
|