Spaces:
Sleeping
Sleeping
Commit ·
067ac42
1
Parent(s): cfc11ee
officer race predictor works
Browse files- inference.py +5 -3
- model.py +8 -3
inference.py
CHANGED
|
@@ -1,19 +1,20 @@
|
|
| 1 |
import numpy as np
|
| 2 |
|
|
|
|
| 3 |
from model import load_models
|
| 4 |
from preprocessor import preprocess
|
| 5 |
|
| 6 |
|
| 7 |
def predict_officer_race(model_name, X):
|
| 8 |
-
models = load_models(model_name, 'OfficerRace')
|
| 9 |
n_samples = 1 # single sample
|
| 10 |
probs = np.zeros((n_samples, 4))
|
| 11 |
for i, model in enumerate(models):
|
| 12 |
prob = model.predict_proba(X)[:, 1]
|
| 13 |
probs[:, i] = prob
|
| 14 |
|
| 15 |
-
|
| 16 |
-
return
|
| 17 |
|
| 18 |
|
| 19 |
def infer_officer_race(model_name, current_rank, incident_rank, previous_complaints, complaint_duration_days,
|
|
@@ -25,4 +26,5 @@ def infer_officer_race(model_name, current_rank, incident_rank, previous_complai
|
|
| 25 |
penalty_rec, penalty_cat, location_type, contact_outcome, impacted_gender, impacted_race,
|
| 26 |
incident_precinct)
|
| 27 |
prediction = predict_officer_race(model_name, input_array)
|
|
|
|
| 28 |
return prediction
|
|
|
|
| 1 |
import numpy as np
|
| 2 |
|
| 3 |
+
import config
|
| 4 |
from model import load_models
|
| 5 |
from preprocessor import preprocess
|
| 6 |
|
| 7 |
|
| 8 |
def predict_officer_race(model_name, X):
|
| 9 |
+
(names, models) = load_models(model_name, 'OfficerRace')
|
| 10 |
n_samples = 1 # single sample
|
| 11 |
probs = np.zeros((n_samples, 4))
|
| 12 |
for i, model in enumerate(models):
|
| 13 |
prob = model.predict_proba(X)[:, 1]
|
| 14 |
probs[:, i] = prob
|
| 15 |
|
| 16 |
+
y = np.argmax(probs, axis=1)
|
| 17 |
+
return names[int(y[0])]
|
| 18 |
|
| 19 |
|
| 20 |
def infer_officer_race(model_name, current_rank, incident_rank, previous_complaints, complaint_duration_days,
|
|
|
|
| 26 |
penalty_rec, penalty_cat, location_type, contact_outcome, impacted_gender, impacted_race,
|
| 27 |
incident_precinct)
|
| 28 |
prediction = predict_officer_race(model_name, input_array)
|
| 29 |
+
prediction = f"The officer is predicted to be {prediction}"
|
| 30 |
return prediction
|
model.py
CHANGED
|
@@ -4,9 +4,14 @@ from pathlib import Path
|
|
| 4 |
|
| 5 |
def load_models(model_name, target_column):
|
| 6 |
"""Load models from disk"""
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
|
| 12 |
def get_folder_names(directory):
|
|
|
|
| 4 |
|
| 5 |
def load_models(model_name, target_column):
|
| 6 |
"""Load models from disk"""
|
| 7 |
+
model_root = Path("./models")
|
| 8 |
+
target_column_root = model_root / target_column
|
| 9 |
+
|
| 10 |
+
if target_column == "OfficerRace":
|
| 11 |
+
model_selected_root = target_column_root / model_name
|
| 12 |
+
models = [joblib.load(f) for f in model_selected_root.iterdir()]
|
| 13 |
+
names = [path.stem.split("_")[-1] for path in model_selected_root.iterdir()]
|
| 14 |
+
return names, models
|
| 15 |
|
| 16 |
|
| 17 |
def get_folder_names(directory):
|