riyadhrazzaq commited on
Commit
067ac42
·
1 Parent(s): cfc11ee

officer race predictor works

Browse files
Files changed (2) hide show
  1. inference.py +5 -3
  2. 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
- Y = np.argmax(probs, axis=1)
16
- return np.eye(4)[Y]
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
- if model_name == "OfficerRace":
8
- models = [joblib.load(path) for path in Path(f"models/{target_column}/{model_name}").glob("*.pkl")]
9
- return models
 
 
 
 
 
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):