MyNameIsTatiBond commited on
Commit
d718d0d
·
1 Parent(s): 7d14e50

Feat: Add Integrated SHAP Explanations (Backend + UI)

Browse files
Files changed (3) hide show
  1. app.py +138 -73
  2. index.html +69 -3
  3. models/shap_background.csv +101 -0
app.py CHANGED
@@ -8,53 +8,67 @@ from fastapi.staticfiles import StaticFiles
8
  from fastapi.responses import FileResponse
9
  from pydantic import BaseModel, Field
10
  from typing import Optional, Literal
11
- import joblib
12
- import numpy as np
13
- from pathlib import Path
14
- import logging
15
  import pandas as pd
16
- from preprocessing import preprocess_input
17
 
18
- # Configure logging
19
- logging.basicConfig(level=logging.INFO)
20
- logger = logging.getLogger(__name__)
21
 
22
- # Initialize FastAPI app
23
- app = FastAPI(title="Fraud Detection API", version="2.0.0")
 
 
24
 
25
- # Model configuration
26
- MODELS_DIR = Path("models")
27
- THRESHOLD_AUTO_FLAG = 0.53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
- # Model registry
30
- MODELS = {}
 
 
 
 
 
 
 
31
 
32
- class ClaimInput(BaseModel):
33
- """Input schema accepting Raw + New Categorical Features"""
34
- # Numeric
35
- policy_annual_premium: float = Field(..., description="Annual policy premium")
36
- total_claim_amount: float = Field(..., description="Total claim amount")
37
- vehicle_age: int = Field(..., description="Age of vehicle in years")
38
- days_since_bind: int = Field(..., description="Days since policy binding")
39
- months_as_customer: int = Field(..., description="Months as customer")
40
- capital_gains: float = Field(0.0, alias="capital-gains")
41
- capital_loss: float = Field(0.0, alias="capital-loss")
42
- injury_share: float = Field(..., description="Share of injury damage")
43
- property_share: float = Field(..., description="Share of property damage")
44
- age: int = Field(38, description="Insured Age")
45
- umbrella_limit: int = Field(..., description="Umbrella policy limit")
46
- incident_hour_of_the_day: int = Field(..., ge=0, le=23)
47
-
48
- # New Categorical Fields
49
- collision_type: Optional[str] = Field(None, description="Front Collision, Side Collision, Rear Collision, or ?")
50
- incident_severity: Optional[str] = Field(None, description="Major Damage, Minor Damage, Total Loss, Trivial Damage")
51
- authorities_contacted: Optional[str] = Field(None, description="Police, Fire, Ambulance, Other, None")
52
- number_of_vehicles_involved: Optional[int] = Field(1, description="Number of vehicles")
53
- bodily_injuries: Optional[int] = Field(0, description="Number of injuries")
54
- police_report_available: Optional[str] = Field(None, description="YES, NO, ?")
55
 
56
- class Config:
57
- populate_by_name = True
 
 
 
58
 
59
  class PredictionResponse(BaseModel):
60
  """Response schema for predictions"""
@@ -63,47 +77,51 @@ class PredictionResponse(BaseModel):
63
  probability: float
64
  threshold_flag: Optional[str] = None
65
  scenario: str
66
-
67
- def load_models():
68
- """Load all available models on startup"""
69
- model_types = ["RandomForest", "ExtraTrees", "XGBoost", "VotingEnsemble"]
70
- calibration_types = ["calibrated", "uncalibrated"]
71
-
72
- for model_type in model_types:
73
- for cal_type in calibration_types:
74
- filename = f"best_tree_models_{cal_type}.joblib"
75
- filepath = MODELS_DIR / filename
76
-
77
- if filepath.exists():
78
- try:
79
- models_dict = joblib.load(filepath)
80
- if 'Trees' in models_dict and model_type in models_dict['Trees']:
81
- key = f"{model_type}_{cal_type}"
82
- MODELS[key] = models_dict['Trees'][model_type]
83
- logger.info(f"Loaded model: {key}")
84
- except Exception as e:
85
- logger.error(f"Error loading {filepath}: {e}")
86
-
87
- logger.info(f"Total models loaded: {len(MODELS)}")
88
 
89
  @app.on_event("startup")
90
  async def startup_event():
91
  load_models()
 
92
 
93
- @app.get("/")
94
- async def root():
95
- return FileResponse("index.html")
 
 
 
 
 
 
 
 
 
 
 
96
 
97
- @app.get("/health")
98
- async def health_check():
99
- return {"status": "healthy", "models_loaded": len(MODELS)}
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
  @app.post("/predict", response_model=PredictionResponse)
102
  async def predict(
103
  claim_data: ClaimInput,
104
  model: Literal["rf", "et", "xgb", "voting"] = Query("rf"),
105
  calibrated: bool = Query(True),
106
- scenario: Literal["auto_flagger", "dashboard"] = Query("dashboard")
 
107
  ):
108
  model_map = {"rf": "RandomForest", "et": "ExtraTrees", "xgb": "XGBoost", "voting": "VotingEnsemble"}
109
  model_name = model_map[model]
@@ -115,7 +133,11 @@ async def predict(
115
  model_key = f"{model_name}_{cal_type}"
116
 
117
  if model_key not in MODELS:
118
- raise HTTPException(status_code=404, detail=f"Model {model_key} not found")
 
 
 
 
119
 
120
  loaded_model = MODELS[model_key]
121
 
@@ -127,7 +149,49 @@ async def predict(
127
  final_df = preprocess_input(input_dict)
128
 
129
  # Predict
130
- proba = loaded_model.predict_proba(final_df)[0, 1]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
 
132
  except Exception as e:
133
  import traceback
@@ -141,10 +205,11 @@ async def predict(
141
 
142
  return PredictionResponse(
143
  model=model_name,
144
- calibrated=(cal_type == "calibrated"),
145
  probability=float(proba),
146
  threshold_flag=threshold_flag,
147
- scenario=scenario
 
148
  )
149
 
150
  if __name__ == "__main__":
 
8
  from fastapi.responses import FileResponse
9
  from pydantic import BaseModel, Field
10
  from typing import Optional, Literal
11
+ import shap
 
 
 
12
  import pandas as pd
 
13
 
14
+ # ... (Previous imports kept implicitly by replace_tool context if not ensuring full file view.
15
+ # Waiting, I should replace blocks. I will do a big replace to ensure imports are there.)
 
16
 
17
+ # SHAP Configuration
18
+ BACKGROUND_DATA_PATH = MODELS_DIR / "shap_background.csv"
19
+ SHAP_EXPLAINERS = {}
20
+ BACKGROUND_DATA = None
21
 
22
+ # Feature Name Mapping (Technical -> User)
23
+ FEATURE_MAP = {
24
+ "total_claim_amount": "Claim Value",
25
+ "injury_share": "Injury Cost Portion",
26
+ "property_share": "Property Damage Portion",
27
+ "incident_hour_of_the_day": "Incident Time",
28
+ "months_as_customer": "Policy Tenure",
29
+ "policy_annual_premium": "Annual Premium",
30
+ "vehicle_age": "Vehicle Age",
31
+ "age": "Insured Age",
32
+ "capital-gains": "Capital Gains",
33
+ "capital-loss": "Capital Losses",
34
+ "umbrella_limit": "Umbrella Limit",
35
+ "bodily_injuries": "Bodily Injuries",
36
+ "number_of_vehicles_involved": "Vehicles Involved",
37
+ "incident_severity_Major Damage": "Major Damage Severity",
38
+ "incident_severity_Total Loss": "Total Loss Severity",
39
+ "collision_type_Rear Collision": "Rear Collision Type",
40
+ "authorities_contacted_Police": "Police Contacted"
41
+ }
42
 
43
+ def load_shap_resources():
44
+ """Load background data and initialize explainers"""
45
+ global BACKGROUND_DATA
46
+ if BACKGROUND_DATA_PATH.exists():
47
+ BACKGROUND_DATA = pd.read_csv(BACKGROUND_DATA_PATH)
48
+ # Ensure dummy columns match model expectation if needed, but preprocessed_for_trees should be good.
49
+ logger.info(f"Loaded SHAP background data: {len(BACKGROUND_DATA)} rows")
50
+ else:
51
+ logger.warning(f"SHAP background data not found at {BACKGROUND_DATA_PATH}")
52
 
53
+ # Pre-compute explainers for loaded models where possible
54
+ # Note: TreeExplainer is fast, but better to cache.
55
+ for key, model in MODELS.items():
56
+ if "Voting" in key: continue # SHAP for voting is complex, we might skip or approx
57
+ try:
58
+ # Just cache the explainer if we have data
59
+ if BACKGROUND_DATA is not None:
60
+ # Check if model has direct estimator or via pipeline steps?
61
+ # Assuming loaded models are pipelines or naked estimators.
62
+ # The 'best_tree_models' are usually estimators.
63
+ SHAP_EXPLAINERS[key] = shap.TreeExplainer(model, BACKGROUND_DATA)
64
+ except Exception as e:
65
+ logger.warning(f"Could not init SHAP for {key}: {e}")
 
 
 
 
 
 
 
 
 
 
66
 
67
+ class ExplanationItem(BaseModel):
68
+ feature: str
69
+ direction: str # "UP" or "DOWN"
70
+ text: str
71
+ importance: float
72
 
73
  class PredictionResponse(BaseModel):
74
  """Response schema for predictions"""
 
77
  probability: float
78
  threshold_flag: Optional[str] = None
79
  scenario: str
80
+ explanation: Optional[list[ExplanationItem]] = None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  @app.on_event("startup")
83
  async def startup_event():
84
  load_models()
85
+ load_shap_resources()
86
 
87
+ def get_readable_explanation(feature, val_raw, shap_val, mean_val):
88
+ """Generate human-friendly text based on feature value and SHAP direction"""
89
+ direction = "Increased risk" if shap_val > 0 else "Reduced risk"
90
+ fname = FEATURE_MAP.get(feature, feature.replace("_", " ").title())
91
+
92
+ # Generic logic
93
+ reason = "factor"
94
+ if shap_val > 0:
95
+ if val_raw > mean_val: reason = f"Higher {fname} than typical"
96
+ else: reason = f"Specific {fname} configuration"
97
+ else:
98
+ if val_raw > mean_val and "tenure" in feature: reason = "Long-standing customer history"
99
+ elif val_raw < mean_val: reason = f"Lower {fname} than typical"
100
+ else: reason = f"Favorable {fname} profile"
101
 
102
+ # Specific Overrides
103
+ if feature == "total_claim_amount":
104
+ if shap_val > 0: reason = "Larger-than-usual claim size"
105
+ else: reason = "Smaller-than-usual claim size"
106
+ elif feature == "incident_hour_of_the_day":
107
+ if shap_val > 0: reason = "Off-hours incident timing"
108
+ else: reason = "Daytime incident timing"
109
+ elif feature == "injury_share":
110
+ if shap_val > 0: reason = "High proportion of injury costs"
111
+ else: reason = "Low proportion of injury costs"
112
+ elif feature == "age":
113
+ if shap_val > 0: reason = "Insured age group associated with higher risk"
114
+ else: reason = "Insured age group associated with lower risk"
115
+
116
+ return direction, reason
117
 
118
  @app.post("/predict", response_model=PredictionResponse)
119
  async def predict(
120
  claim_data: ClaimInput,
121
  model: Literal["rf", "et", "xgb", "voting"] = Query("rf"),
122
  calibrated: bool = Query(True),
123
+ scenario: Literal["auto_flagger", "dashboard"] = Query("dashboard"),
124
+ explain: bool = Query(True)
125
  ):
126
  model_map = {"rf": "RandomForest", "et": "ExtraTrees", "xgb": "XGBoost", "voting": "VotingEnsemble"}
127
  model_name = model_map[model]
 
133
  model_key = f"{model_name}_{cal_type}"
134
 
135
  if model_key not in MODELS:
136
+ # Fallback to uncalibrated if calibrated not found (common dev issue)
137
+ if cal_type == 'calibrated':
138
+ model_key = f"{model_name}_uncalibrated"
139
+ if model_key not in MODELS:
140
+ raise HTTPException(status_code=404, detail=f"Model {model_key} not found")
141
 
142
  loaded_model = MODELS[model_key]
143
 
 
149
  final_df = preprocess_input(input_dict)
150
 
151
  # Predict
152
+ # Check if pipeline or raw model
153
+ if hasattr(loaded_model, "predict_proba"):
154
+ proba = loaded_model.predict_proba(final_df)[0, 1]
155
+ else:
156
+ # Basic fallback
157
+ start_pred = loaded_model.predict(final_df)
158
+ proba = float(start_pred[0])
159
+
160
+
161
+ # SHAP EXPLANATION
162
+ explanation_items = []
163
+ if explain and "Voting" not in model_name and BACKGROUND_DATA is not None:
164
+ # Only simple tree models for now
165
+ try:
166
+ explainer = SHAP_EXPLAINERS.get(model_key)
167
+ if not explainer:
168
+ # Lazy init
169
+ explainer = shap.TreeExplainer(loaded_model, BACKGROUND_DATA)
170
+ SHAP_EXPLAINERS[model_key] = explainer
171
+
172
+ shap_values = explainer.shap_values(final_df)
173
+ # Handle list output (for classification) -> take index 1 (positive class) or 0 if regression
174
+ if isinstance(shap_values, list):
175
+ vals = shap_values[1][0]
176
+ else:
177
+ vals = shap_values[0] # assuming single row, SHAP returns array
178
+
179
+ # Create DF
180
+ shap_df = pd.DataFrame(list(zip(final_df.columns, vals, final_df.iloc[0])), columns=['feature', 'shap', 'val'])
181
+ shap_df['abs_shap'] = shap_df['shap'].abs()
182
+ top_5 = shap_df.sort_values('abs_shap', ascending=False).head(5)
183
+
184
+ for _, row in top_5.iterrows():
185
+ direction, text = get_readable_explanation(row['feature'], row['val'], row['shap'], 0) # 0 is dummy mean for now
186
+ explanation_items.append(ExplanationItem(
187
+ feature=FEATURE_MAP.get(row['feature'], row['feature']),
188
+ direction="UP" if row['shap'] > 0 else "DOWN",
189
+ text=text,
190
+ importance=float(row['abs_shap'])
191
+ ))
192
+
193
+ except Exception as e:
194
+ logger.warning(f"SHAP gen failed: {e}")
195
 
196
  except Exception as e:
197
  import traceback
 
205
 
206
  return PredictionResponse(
207
  model=model_name,
208
+ calibrated=("calibrated" in model_key),
209
  probability=float(proba),
210
  threshold_flag=threshold_flag,
211
+ scenario=scenario,
212
+ explanation=explanation_items
213
  )
214
 
215
  if __name__ == "__main__":
index.html CHANGED
@@ -594,7 +594,7 @@
594
 
595
  <!-- 3. DECISION RECOMMENDATION (Card Style) -->
596
  <div class="result-section"
597
- style="margin-bottom: 30px; padding: 20px; border-radius: 6px; background: rgba(255,255,255,0.06);">
598
  <div
599
  style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; opacity: 0.6; margin-bottom: 12px;">
600
  Recommended Action</div>
@@ -602,11 +602,30 @@
602
  <div style="font-size: 14px; opacity: 0.8; margin-bottom: 5px;">Next steps:</div>
603
  <div id="resActionSteps" style="font-size: 14px; line-height: 1.6; opacity: 0.9; padding-left: 5px;">--
604
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
605
  </div>
606
 
607
  <!-- 4. METADATA (Single Line, Quiet) -->
608
  <div id="metaFooter"
609
- style="border-top: 1px solid var(--clr-divider); padding-top: 15px; font-size: 11px; opacity: 0.4; text-align: center;">
610
  --
611
  </div>
612
  </div>
@@ -706,13 +725,55 @@
706
  document.getElementById('scenario_desc').innerText = scenarioDesc[e.target.value];
707
  });
708
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
709
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
710
 
711
  // --- SUBMISSION ---
712
  document.getElementById('predictBtn').addEventListener('click', async () => {
713
  const btn = document.getElementById('predictBtn');
714
  const resBox = document.getElementById('resultBox');
715
  const errBox = document.getElementById('errorBox');
 
716
 
717
  // Reset
718
  btn.disabled = true;
@@ -720,6 +781,7 @@
720
  btn.innerText = "Processing...";
721
  resBox.style.display = 'none';
722
  errBox.style.display = 'none';
 
723
 
724
  try {
725
  // Construct Payload
@@ -747,7 +809,8 @@
747
  const model = document.getElementById('model').value;
748
  const scenario = document.getElementById('scenario').value;
749
 
750
- const response = await fetch(`/predict?model=${model}&scenario=${scenario}`, {
 
751
  method: 'POST',
752
  headers: { 'Content-Type': 'application/json' },
753
  body: JSON.stringify(payload)
@@ -807,6 +870,9 @@
807
 
808
  document.getElementById('metaFooter').innerText = `Model: ${txtModel} · Calibration: ${calibStatus} · Mode: ${modeStatus}`;
809
 
 
 
 
810
  resBox.style.display = 'block';
811
 
812
  } catch (e) {
 
594
 
595
  <!-- 3. DECISION RECOMMENDATION (Card Style) -->
596
  <div class="result-section"
597
+ style="margin-bottom: 20px; padding: 20px; border-radius: 6px; background: rgba(255,255,255,0.06);">
598
  <div
599
  style="font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; opacity: 0.6; margin-bottom: 12px;">
600
  Recommended Action</div>
 
602
  <div style="font-size: 14px; opacity: 0.8; margin-bottom: 5px;">Next steps:</div>
603
  <div id="resActionSteps" style="font-size: 14px; line-height: 1.6; opacity: 0.9; padding-left: 5px;">--
604
  </div>
605
+
606
+ <!-- SHAP TRIGGER -->
607
+ <button id="viewDriversBtn"
608
+ style="margin-top: 20px; background: transparent; border: 1px solid var(--clr-divider); color: var(--clr-text); padding: 8px 16px; font-size: 12px; border-radius: 4px; cursor: pointer; opacity: 0.8;">👉
609
+ View risk drivers</button>
610
+ </div>
611
+
612
+ <!-- RISK DRIVERS PANEL (Hidden) -->
613
+ <div id="driversPanel"
614
+ style="display:none; margin-top: 25px; padding-top: 20px; border-top: 1px solid var(--clr-divider);">
615
+ <div style="font-size: 14px; font-weight: 600; margin-bottom: 15px;">Risk Drivers</div>
616
+ <div style="font-size: 12px; opacity: 0.6; margin-bottom: 15px;">Top factors influencing this risk
617
+ score provided by SHAP analysis.</div>
618
+
619
+ <div id="driversList" style="display: list-item;"></div>
620
+
621
+ <div style="margin-top: 15px; font-size: 10px; opacity: 0.4; font-style: italic;">
622
+ These factors indicate statistical associations, not proof of fraud.
623
+ </div>
624
  </div>
625
 
626
  <!-- 4. METADATA (Single Line, Quiet) -->
627
  <div id="metaFooter"
628
+ style="border-top: 1px solid var(--clr-divider); margin-top: 20px; padding-top: 15px; font-size: 11px; opacity: 0.4; text-align: center;">
629
  --
630
  </div>
631
  </div>
 
725
  document.getElementById('scenario_desc').innerText = scenarioDesc[e.target.value];
726
  });
727
 
728
+ // Global state for explanation
729
+ let lastExplanation = [];
730
+
731
+ // Toggle Drivers
732
+ document.getElementById('viewDriversBtn').addEventListener('click', () => {
733
+ const panel = document.getElementById('driversPanel');
734
+ if (panel.style.display === 'none') {
735
+ panel.style.display = 'block';
736
+ // Render
737
+ const list = document.getElementById('driversList');
738
+ list.innerHTML = '';
739
+
740
+ if (!lastExplanation || lastExplanation.length === 0) {
741
+ list.innerHTML = '<div style="opacity:0.5; font-size:12px;">No risk drivers available for this model/scenario.</div>';
742
+ return;
743
+ }
744
 
745
+ lastExplanation.forEach(item => {
746
+ const isUp = item.direction === 'UP';
747
+ const icon = isUp ? '⬆' : '⬇';
748
+ const color = isUp ? '#ffcccc' : '#ccffcc'; // Subtle tint? Actually user said "Arrow or +/- sign (subtle)"
749
+ // User said: "Injury-related costs ... Increased risk ... Higher than typical"
750
+
751
+ const row = document.createElement('div');
752
+ row.style.marginBottom = "15px";
753
+ row.style.borderBottom = "1px solid rgba(255,255,255,0.05)";
754
+ row.style.paddingBottom = "10px";
755
+
756
+ row.innerHTML = `
757
+ <div style="font-weight: 500; font-size: 14px; margin-bottom: 4px;">${item.feature}</div>
758
+ <div style="display: flex; align-items: center; gap: 10px; font-size: 13px; opacity: 0.9;">
759
+ <span style="opacity: 0.7;">${icon} ${item.direction === 'UP' ? 'Increased risk' : 'Reduced risk'}</span>
760
+ <span style="opacity: 0.4;">|</span>
761
+ <span>${item.text}</span>
762
+ </div>
763
+ `;
764
+ list.appendChild(row);
765
+ });
766
+ } else {
767
+ panel.style.display = 'none';
768
+ }
769
+ });
770
 
771
  // --- SUBMISSION ---
772
  document.getElementById('predictBtn').addEventListener('click', async () => {
773
  const btn = document.getElementById('predictBtn');
774
  const resBox = document.getElementById('resultBox');
775
  const errBox = document.getElementById('errorBox');
776
+ const driversPanel = document.getElementById('driversPanel');
777
 
778
  // Reset
779
  btn.disabled = true;
 
781
  btn.innerText = "Processing...";
782
  resBox.style.display = 'none';
783
  errBox.style.display = 'none';
784
+ driversPanel.style.display = 'none'; // Auto hide on new predict
785
 
786
  try {
787
  // Construct Payload
 
809
  const model = document.getElementById('model').value;
810
  const scenario = document.getElementById('scenario').value;
811
 
812
+ // Request explanation by default now
813
+ const response = await fetch(`/predict?model=${model}&scenario=${scenario}&explain=true`, {
814
  method: 'POST',
815
  headers: { 'Content-Type': 'application/json' },
816
  body: JSON.stringify(payload)
 
870
 
871
  document.getElementById('metaFooter').innerText = `Model: ${txtModel} · Calibration: ${calibStatus} · Mode: ${modeStatus}`;
872
 
873
+ // 5. Store SHAP
874
+ lastExplanation = data.explanation || [];
875
+
876
  resBox.style.display = 'block';
877
 
878
  } catch (e) {
models/shap_background.csv ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ months_as_customer,age,policy_state,policy_deductable,policy_annual_premium,umbrella_limit,insured_sex,insured_education_level,insured_occupation,insured_hobbies,insured_relationship,capital-gains,capital-loss,incident_type,collision_type,incident_severity,authorities_contacted,incident_state,incident_city,incident_hour_of_the_day,number_of_vehicles_involved,property_damage,bodily_injuries,witnesses,police_report_available,total_claim_amount,auto_make,auto_model,injury_share,property_share,target,days_since_bind,incident_month,vehicle_age,collision_type_missing,authorities_contacted_missing,property_damage_missing,police_report_available_missing,hour_sin,hour_cos,hour_bin_4,csl_per_person,csl_per_incident
2
+ 5,26,IL,2000,1137.02,0,FEMALE,PhD,farming-fishing,skydiving,not-in-family,31500,0,Single Vehicle Collision,Rear Collision,Total Loss,Ambulance,WV,Springfield,22,1,YES,1,3,Missing,88110,Audi,A5,0.1818181818181818,0.1818181818181818,0,182,1,12,0,0,0,1,-0.5000000000000004,0.8660254037844384,Evening (18-23),250,500
3
+ 160,33,IL,1000,1422.78,0,FEMALE,High School,exec-managerial,exercise,husband,61600,0,Multi-vehicle Collision,Front Collision,Total Loss,Ambulance,NC,Riverwood,17,3,Missing,2,3,YES,52800,Nissan,Pathfinder,0.1,0.1,0,2172,1,9,0,0,1,0,-0.9659258262890684,-0.2588190451025206,Afternoon (12-17),500,1000
4
+ 385,51,IN,1000,976.37,0,FEMALE,MD,craft-repair,reading,husband,0,-61000,Multi-vehicle Collision,Rear Collision,Minor Damage,Other,WV,Riverwood,14,3,Missing,1,3,Missing,67600,Suburu,Legacy,0.2,0.1,0,8979,2,8,0,0,1,1,-0.5000000000000001,-0.8660254037844386,Afternoon (12-17),250,500
5
+ 446,57,IN,2000,1373.21,0,MALE,College,adm-clerical,sleeping,unmarried,42700,-64900,Multi-vehicle Collision,Front Collision,Total Loss,Police,SC,Northbrook,10,3,NO,0,0,NO,62800,Jeep,Wrangler,0.1,0.2,0,8102,2,3,0,0,0,0,0.4999999999999999,-0.8660254037844387,Morning (6-11),100,300
6
+ 84,29,OH,1000,1117.17,0,FEMALE,High School,machine-op-inspct,video-games,not-in-family,0,-29900,Parked Car,Missing,Trivial Damage,Police,SC,Arlington,6,1,YES,2,0,YES,6820,BMW,3 Series,0.0909090909090909,0.1818181818181818,0,4327,2,10,1,0,0,0,1.0,6.123233995736766e-17,Morning (6-11),250,500
7
+ 276,45,IL,500,948.1,0,FEMALE,High School,machine-op-inspct,reading,wife,44500,-61400,Multi-vehicle Collision,Front Collision,Minor Damage,Fire,SC,Columbus,11,3,Missing,0,2,Missing,69300,Ford,Escape,0.2,0.1,0,5403,1,5,0,0,1,1,0.258819045102521,-0.9659258262890682,Morning (6-11),500,1000
8
+ 303,50,IL,2000,836.11,5000000,MALE,Masters,sales,camping,not-in-family,0,0,Multi-vehicle Collision,Side Collision,Major Damage,Fire,SC,Springfield,1,4,YES,1,2,NO,72840,Dodge,Neon,0.1666666666666666,0.0833333333333333,0,6532,1,5,0,0,0,0,0.2588190451025207,0.9659258262890684,Night (0-5),100,300
9
+ 184,38,IL,1000,1437.53,0,FEMALE,College,transport-moving,chess,not-in-family,0,0,Multi-vehicle Collision,Side Collision,Minor Damage,Ambulance,PA,Northbrook,6,3,Missing,0,2,NO,53730,Dodge,RAM,0.2222222222222222,0.1111111111111111,1,7448,2,2,0,0,1,0,1.0,6.123233995736766e-17,Morning (6-11),250,500
10
+ 130,30,IL,2000,1193.4,0,MALE,PhD,exec-managerial,bungie-jumping,own-child,0,-40800,Multi-vehicle Collision,Side Collision,Total Loss,Other,SC,Columbus,16,3,NO,2,3,Missing,48950,Suburu,Legacy,0.1818181818181818,0.0909090909090909,0,890,2,10,0,0,0,1,-0.8660254037844384,-0.5000000000000004,Afternoon (12-17),500,1000
11
+ 200,40,IL,1000,1439.34,0,FEMALE,High School,sales,exercise,other-relative,45300,-20400,Vehicle Theft,Missing,Minor Damage,Police,VA,Riverwood,9,1,Missing,0,0,NO,3690,Ford,Escape,0.1111111111111111,0.1111111111111111,0,1696,1,0,1,0,1,0,0.7071067811865476,-0.7071067811865475,Morning (6-11),100,300
12
+ 114,30,OH,1000,1173.25,0,FEMALE,Masters,protective-serv,dancing,husband,0,-34700,Vehicle Theft,Missing,Minor Damage,Missing,WV,Arlington,3,1,NO,0,3,YES,4680,Chevrolet,Malibu,0.1111111111111111,0.1111111111111111,0,2786,2,2,1,1,0,0,0.7071067811865475,0.7071067811865476,Night (0-5),250,500
13
+ 270,45,OH,1000,1038.09,0,FEMALE,College,handlers-cleaners,golf,husband,0,-19700,Multi-vehicle Collision,Front Collision,Minor Damage,Fire,NY,Springfield,18,3,NO,1,1,YES,89400,Suburu,Legacy,0.1666666666666666,0.0833333333333333,0,1828,1,17,0,0,0,0,-1.0,-1.8369701987210294e-16,Evening (18-23),500,1000
14
+ 106,28,OH,2000,1609.11,0,MALE,High School,craft-repair,polo,own-child,0,0,Vehicle Theft,Missing,Minor Damage,Police,WV,Hillsdale,8,1,YES,2,1,YES,5490,Saab,95,0.0,0.2222222222222222,0,9022,1,16,1,0,0,0,0.8660254037844387,-0.4999999999999998,Morning (6-11),100,300
15
+ 230,37,IL,1000,1060.74,0,MALE,PhD,tech-support,reading,own-child,0,-51500,Single Vehicle Collision,Rear Collision,Major Damage,Ambulance,SC,Columbus,15,1,YES,2,3,Missing,49100,Suburu,Impreza,0.2,0.1,1,3560,1,19,0,0,0,1,-0.7071067811865475,-0.7071067811865477,Afternoon (12-17),500,1000
16
+ 147,31,IN,500,1054.92,6000000,FEMALE,PhD,prof-specialty,exercise,own-child,51900,0,Single Vehicle Collision,Front Collision,Major Damage,Other,NY,Northbrook,4,1,Missing,0,0,Missing,68240,Toyota,Corolla,0.125,0.0,1,6549,1,2,0,0,1,1,0.8660254037844386,0.5000000000000001,Night (0-5),250,500
17
+ 127,34,OH,500,1319.97,0,FEMALE,Associate,craft-repair,paintball,own-child,73700,0,Vehicle Theft,Missing,Minor Damage,Missing,NC,Arlington,8,1,YES,1,3,Missing,4700,Saab,92x,0.1,0.2,0,3079,1,17,1,1,0,1,0.8660254037844387,-0.4999999999999998,Morning (6-11),500,1000
18
+ 259,39,OH,1000,1422.36,0,FEMALE,JD,craft-repair,movies,unmarried,0,-83900,Multi-vehicle Collision,Side Collision,Minor Damage,Fire,PA,Columbus,12,3,NO,1,3,Missing,46560,Nissan,Ultima,0.1666666666666666,0.1666666666666666,0,7067,1,3,0,0,0,1,1.2246467991473532e-16,-1.0,Afternoon (12-17),250,500
19
+ 115,31,OH,1000,1051.67,0,FEMALE,Associate,exec-managerial,bungie-jumping,not-in-family,0,0,Multi-vehicle Collision,Side Collision,Major Damage,Ambulance,WV,Riverwood,18,3,YES,0,3,NO,34160,Audi,A5,0.0,0.125,1,3374,3,10,0,0,0,0,-1.0,-1.8369701987210294e-16,Evening (18-23),500,1000
20
+ 440,57,IL,1000,995.55,5000000,MALE,College,protective-serv,paintball,wife,51500,-52100,Multi-vehicle Collision,Rear Collision,Major Damage,Police,SC,Arlington,19,3,YES,0,3,Missing,68200,Jeep,Wrangler,0.1818181818181818,0.1818181818181818,1,2881,2,8,0,0,0,1,-0.9659258262890684,0.2588190451025203,Evening (18-23),100,300
21
+ 85,30,IN,1000,1454.42,0,MALE,Associate,protective-serv,reading,other-relative,51600,-73900,Single Vehicle Collision,Side Collision,Major Damage,Other,NY,Springfield,19,1,YES,0,1,YES,74280,Suburu,Forrestor,0.1666666666666666,0.1666666666666666,1,7764,1,9,0,0,0,0,-0.9659258262890684,0.2588190451025203,Evening (18-23),500,1000
22
+ 101,29,OH,500,1380.89,0,MALE,PhD,armed-forces,dancing,own-child,30000,-53000,Multi-vehicle Collision,Rear Collision,Minor Damage,Ambulance,SC,Arlington,0,3,Missing,2,1,Missing,67210,BMW,X6,0.1818181818181818,0.1818181818181818,0,181,2,19,0,0,1,1,0.0,1.0,Night (0-5),250,500
23
+ 294,44,IL,1000,1226.49,0,FEMALE,PhD,farming-fishing,kayaking,unmarried,53900,0,Vehicle Theft,Missing,Trivial Damage,Missing,WV,Riverwood,3,1,NO,0,1,NO,6100,Ford,Fusion,0.1,0.2,0,8940,2,13,1,1,0,0,0.7071067811865475,0.7071067811865476,Night (0-5),100,300
24
+ 273,41,OH,1000,1403.9,0,FEMALE,PhD,farming-fishing,dancing,own-child,0,0,Multi-vehicle Collision,Side Collision,Total Loss,Police,VA,Riverwood,16,2,Missing,1,2,YES,44110,Honda,Accord,0.0909090909090909,0.1818181818181818,0,1809,1,0,0,0,1,0,-0.8660254037844384,-0.5000000000000004,Afternoon (12-17),500,1000
25
+ 285,47,IN,1000,1216.68,0,FEMALE,Masters,sales,basketball,other-relative,55100,0,Vehicle Theft,Missing,Trivial Damage,Police,SC,Columbus,8,1,NO,1,1,NO,2700,Ford,F150,0.1111111111111111,0.1111111111111111,0,8499,1,2,1,0,0,0,0.8660254037844387,-0.4999999999999998,Morning (6-11),100,300
26
+ 63,24,OH,2000,1620.89,0,FEMALE,High School,handlers-cleaners,movies,other-relative,0,0,Vehicle Theft,Missing,Minor Damage,Police,NC,Hillsdale,7,1,NO,2,0,NO,6120,Toyota,Corolla,0.1666666666666666,0.1666666666666666,0,7696,2,0,1,0,0,0,0.9659258262890684,-0.2588190451025208,Morning (6-11),250,500
27
+ 428,54,IN,2000,1506.21,0,MALE,Masters,transport-moving,kayaking,unmarried,0,-24400,Multi-vehicle Collision,Side Collision,Minor Damage,Fire,NY,Riverwood,16,3,NO,1,0,Missing,76560,Nissan,Ultima,0.1666666666666666,0.0833333333333333,0,4005,1,6,0,0,0,1,-0.8660254037844384,-0.5000000000000004,Afternoon (12-17),100,300
28
+ 80,27,IL,1000,1474.17,0,FEMALE,College,tech-support,exercise,unmarried,0,0,Single Vehicle Collision,Side Collision,Major Damage,Police,WV,Northbend,13,1,YES,1,0,YES,52800,Saab,95,0.2,0.1,0,6772,2,11,0,0,0,0,-0.2588190451025203,-0.9659258262890684,Afternoon (12-17),100,300
29
+ 232,42,IN,500,944.03,0,MALE,College,handlers-cleaners,kayaking,not-in-family,0,-58400,Single Vehicle Collision,Rear Collision,Minor Damage,Other,WV,Riverwood,11,1,YES,2,3,Missing,77000,Toyota,Highlander,0.2,0.1,1,660,2,0,0,0,0,1,0.258819045102521,-0.9659258262890682,Morning (6-11),100,300
30
+ 64,28,IL,1000,1468.82,0,MALE,JD,handlers-cleaners,skydiving,other-relative,56800,-51800,Multi-vehicle Collision,Side Collision,Minor Damage,Fire,SC,Riverwood,9,3,NO,2,1,NO,60000,Honda,Accord,0.0833333333333333,0.1666666666666666,0,8497,2,18,0,0,0,0,0.7071067811865476,-0.7071067811865475,Morning (6-11),500,1000
31
+ 465,63,IL,500,1006.99,6000000,FEMALE,Masters,sales,board-games,own-child,0,0,Single Vehicle Collision,Side Collision,Minor Damage,Other,WV,Columbus,7,1,NO,0,3,Missing,43560,Suburu,Legacy,0.1111111111111111,0.1111111111111111,0,1120,2,0,0,0,0,1,0.9659258262890684,-0.2588190451025208,Morning (6-11),250,500
32
+ 429,56,OH,1000,1127.89,6000000,MALE,Associate,machine-op-inspct,skydiving,own-child,67400,-43800,Single Vehicle Collision,Rear Collision,Minor Damage,Ambulance,WV,Springfield,0,1,YES,2,0,YES,39480,Suburu,Forrestor,0.1666666666666666,0.1666666666666666,0,5891,1,13,0,0,0,0,0.0,1.0,Night (0-5),250,500
33
+ 124,32,IL,1000,1198.15,0,FEMALE,MD,other-service,hiking,not-in-family,0,-43200,Multi-vehicle Collision,Front Collision,Total Loss,Other,VA,Springfield,19,3,NO,0,2,YES,73560,BMW,X5,0.1666666666666666,0.1666666666666666,0,8295,2,20,0,0,0,0,-0.9659258262890684,0.2588190451025203,Evening (18-23),250,500
34
+ 87,27,OH,500,1048.39,0,FEMALE,Masters,transport-moving,polo,own-child,0,0,Single Vehicle Collision,Side Collision,Minor Damage,Police,NY,Riverwood,2,1,Missing,2,1,YES,34650,Ford,F150,0.1818181818181818,0.0909090909090909,0,4059,2,19,0,0,1,0,0.4999999999999999,0.8660254037844387,Night (0-5),100,300
35
+ 304,49,IN,1000,1525.86,0,FEMALE,PhD,craft-repair,camping,own-child,0,0,Single Vehicle Collision,Side Collision,Minor Damage,Other,NC,Northbend,2,1,YES,1,1,YES,73370,Saab,95,0.1818181818181818,0.0909090909090909,0,4866,1,2,0,0,0,0,0.4999999999999999,0.8660254037844387,Night (0-5),100,300
36
+ 396,57,IN,1000,1366.39,0,MALE,High School,protective-serv,exercise,other-relative,0,-22400,Multi-vehicle Collision,Front Collision,Major Damage,Other,NC,Columbus,22,3,YES,2,1,NO,52560,Saab,93,0.2222222222222222,0.1111111111111111,0,8146,1,20,0,0,0,0,-0.5000000000000004,0.8660254037844384,Evening (18-23),100,300
37
+ 328,48,IL,500,1411.43,0,MALE,Masters,armed-forces,bungie-jumping,own-child,45100,-32800,Single Vehicle Collision,Front Collision,Major Damage,Ambulance,NY,Riverwood,17,1,YES,2,1,NO,59400,Honda,Civic,0.1,0.2,0,3324,1,1,0,0,0,0,-0.9659258262890684,-0.2588190451025206,Afternoon (12-17),250,500
38
+ 194,41,IL,500,1203.81,0,MALE,JD,transport-moving,video-games,not-in-family,52500,-51300,Multi-vehicle Collision,Rear Collision,Minor Damage,Police,WV,Springfield,17,3,Missing,0,2,Missing,95900,Saab,95,0.1428571428571428,0.2142857142857142,0,8026,2,16,0,0,1,1,-0.9659258262890684,-0.2588190451025206,Afternoon (12-17),250,500
39
+ 96,27,IL,1000,1631.1,0,FEMALE,High School,priv-house-serv,exercise,wife,0,0,Parked Car,Missing,Trivial Damage,Police,WV,Arlington,4,1,Missing,1,2,NO,6030,Nissan,Pathfinder,0.1111111111111111,0.1111111111111111,0,2166,1,8,1,0,1,0,0.8660254037844386,0.5000000000000001,Night (0-5),100,300
40
+ 5,21,IN,500,915.41,5000000,FEMALE,High School,exec-managerial,sleeping,own-child,0,0,Single Vehicle Collision,Side Collision,Total Loss,Police,NY,Northbrook,23,1,YES,0,0,NO,40500,Nissan,Pathfinder,0.1,0.1,0,4473,2,17,0,0,0,0,-0.2588190451025207,0.9659258262890684,Evening (18-23),250,500
41
+ 151,36,OH,2000,870.63,0,FEMALE,MD,adm-clerical,kayaking,own-child,94800,-58500,Multi-vehicle Collision,Side Collision,Minor Damage,Police,VA,Hillsdale,12,3,NO,1,1,NO,62920,Ford,Escape,0.1818181818181818,0.0909090909090909,0,3601,1,15,0,0,0,0,1.2246467991473532e-16,-1.0,Afternoon (12-17),250,500
42
+ 257,40,IN,500,1379.93,0,MALE,MD,armed-forces,base-jumping,husband,0,0,Multi-vehicle Collision,Side Collision,Major Damage,Other,NY,Columbus,6,3,Missing,0,2,YES,51810,Audi,A3,0.1818181818181818,0.0909090909090909,1,929,2,13,0,0,1,0,1.0,6.123233995736766e-17,Morning (6-11),250,500
43
+ 325,47,IN,1000,1690.27,0,FEMALE,Associate,protective-serv,hiking,not-in-family,61500,0,Single Vehicle Collision,Side Collision,Major Damage,Fire,VA,Springfield,11,1,YES,0,3,NO,72930,Dodge,RAM,0.0909090909090909,0.0909090909090909,1,3265,1,9,0,0,0,0,0.258819045102521,-0.9659258262890682,Morning (6-11),500,1000
44
+ 158,33,OH,2000,1327.41,0,FEMALE,Associate,handlers-cleaners,skydiving,other-relative,0,-38600,Single Vehicle Collision,Side Collision,Total Loss,Other,SC,Hillsdale,0,1,Missing,0,0,Missing,35000,Suburu,Legacy,0.1,0.2,0,396,1,3,0,0,1,1,0.0,1.0,Night (0-5),100,300
45
+ 234,41,IN,500,951.56,0,FEMALE,JD,transport-moving,video-games,wife,59400,-78600,Multi-vehicle Collision,Side Collision,Major Damage,Police,SC,Riverwood,3,3,NO,2,1,Missing,98280,Chevrolet,Tahoe,0.1538461538461538,0.0769230769230769,1,9034,2,8,0,0,0,1,0.7071067811865475,0.7071067811865476,Night (0-5),100,300
46
+ 119,27,IN,2000,1097.64,0,MALE,High School,transport-moving,video-games,other-relative,27100,0,Multi-vehicle Collision,Rear Collision,Major Damage,Other,PA,Northbend,16,2,NO,1,0,Missing,63720,Accura,TL,0.1111111111111111,0.3333333333333333,0,6394,2,9,0,0,0,1,-0.8660254037844384,-0.5000000000000004,Afternoon (12-17),250,500
47
+ 264,41,OH,500,1411.3,0,MALE,PhD,prof-specialty,cross-fit,unmarried,55600,0,Single Vehicle Collision,Rear Collision,Minor Damage,Other,PA,Northbrook,4,1,NO,1,0,Missing,60390,BMW,M5,0.1818181818181818,0.0909090909090909,1,4498,2,11,0,0,0,1,0.8660254037844386,0.5000000000000001,Night (0-5),100,300
48
+ 135,30,IN,2000,1341.24,0,FEMALE,MD,farming-fishing,skydiving,wife,37100,-46500,Multi-vehicle Collision,Rear Collision,Minor Damage,Ambulance,WV,Riverwood,18,3,NO,0,1,NO,32670,Honda,Accord,0.1818181818181818,0.0909090909090909,0,2189,1,12,0,0,0,0,-1.0,-1.8369701987210294e-16,Evening (18-23),500,1000
49
+ 98,31,IN,500,671.92,0,MALE,Masters,machine-op-inspct,bungie-jumping,wife,0,-26400,Single Vehicle Collision,Front Collision,Minor Damage,Other,NC,Riverwood,3,1,Missing,2,0,Missing,64080,Ford,Escape,0.1111111111111111,0.1111111111111111,0,9123,1,18,0,0,1,1,0.7071067811865475,0.7071067811865476,Night (0-5),100,300
50
+ 61,29,IN,1000,1115.27,0,MALE,JD,handlers-cleaners,polo,unmarried,0,-66000,Parked Car,Missing,Trivial Damage,Missing,VA,Hillsdale,10,1,YES,2,1,YES,5900,Nissan,Pathfinder,0.1,0.1,0,7233,1,5,1,1,0,0,0.4999999999999999,-0.8660254037844387,Morning (6-11),250,500
51
+ 9,24,IL,2000,1304.46,0,FEMALE,PhD,machine-op-inspct,golf,other-relative,51700,-33300,Vehicle Theft,Missing,Trivial Damage,Missing,NC,Arlington,6,1,NO,0,3,YES,5940,Audi,A5,0.0909090909090909,0.1818181818181818,1,4634,1,14,1,1,0,0,1.0,6.123233995736766e-17,Morning (6-11),100,300
52
+ 158,33,OH,1000,1744.64,3000000,MALE,JD,prof-specialty,movies,unmarried,0,0,Multi-vehicle Collision,Rear Collision,Total Loss,Ambulance,WV,Springfield,4,3,NO,0,1,NO,36400,Volkswagen,Jetta,0.1,0.2,0,413,2,17,0,0,0,0,0.8660254037844386,0.5000000000000001,Night (0-5),100,300
53
+ 338,47,IL,500,1143.46,4000000,MALE,MD,priv-house-serv,polo,other-relative,0,0,Single Vehicle Collision,Front Collision,Total Loss,Other,NC,Arlington,4,1,YES,2,1,Missing,58560,Mercedes,E400,0.1666666666666666,0.1666666666666666,0,7123,2,13,0,0,0,1,0.8660254037844386,0.5000000000000001,Night (0-5),500,1000
54
+ 156,31,IL,2000,1134.08,0,MALE,PhD,other-service,reading,husband,0,0,Single Vehicle Collision,Front Collision,Major Damage,Police,NC,Arlington,3,1,Missing,2,0,Missing,59000,Ford,Fusion,0.1,0.1,1,6713,2,2,0,0,1,1,0.7071067811865475,0.7071067811865476,Night (0-5),100,300
55
+ 415,52,IN,1000,973.5,0,MALE,PhD,machine-op-inspct,polo,not-in-family,50400,0,Multi-vehicle Collision,Rear Collision,Total Loss,Police,WV,Arlington,15,2,YES,1,3,YES,51090,Toyota,Highlander,0.1538461538461538,0.1538461538461538,0,0,2,12,0,0,0,0,-0.7071067811865475,-0.7071067811865477,Afternoon (12-17),250,500
56
+ 413,55,IN,2000,1268.79,0,MALE,MD,priv-house-serv,chess,own-child,0,-31000,Single Vehicle Collision,Front Collision,Total Loss,Ambulance,WV,Northbend,15,1,Missing,2,2,Missing,98160,Dodge,RAM,0.0833333333333333,0.1666666666666666,1,8746,1,4,0,0,1,1,-0.7071067811865475,-0.7071067811865477,Afternoon (12-17),100,300
57
+ 64,25,IL,1000,954.16,0,MALE,Masters,prof-specialty,video-games,husband,53200,0,Multi-vehicle Collision,Side Collision,Major Damage,Ambulance,SC,Columbus,22,4,NO,0,0,Missing,75600,Toyota,Corolla,0.1666666666666666,0.1666666666666666,0,5448,1,10,0,0,0,1,-0.5000000000000004,0.8660254037844384,Evening (18-23),250,500
58
+ 103,26,IL,500,1354.83,0,MALE,MD,tech-support,sleeping,husband,66300,0,Multi-vehicle Collision,Front Collision,Minor Damage,Police,NY,Arlington,14,2,NO,2,2,Missing,40600,Volkswagen,Passat,0.1,0.1,0,272,1,5,0,0,0,1,-0.5000000000000001,-0.8660254037844386,Afternoon (12-17),100,300
59
+ 235,42,OH,500,1253.12,4000000,FEMALE,Masters,exec-managerial,dancing,other-relative,38400,0,Single Vehicle Collision,Front Collision,Total Loss,Police,NY,Northbend,22,1,YES,2,2,Missing,87010,Ford,F150,0.0909090909090909,0.1818181818181818,0,4608,1,13,0,0,0,1,-0.5000000000000004,0.8660254037844384,Evening (18-23),100,300
60
+ 298,49,OH,500,1451.01,0,FEMALE,College,other-service,exercise,own-child,47800,0,Single Vehicle Collision,Front Collision,Minor Damage,Ambulance,NY,Springfield,17,1,NO,2,2,NO,28100,Jeep,Grand Cherokee,0.1,0.2,0,2282,2,3,0,0,0,0,-0.9659258262890684,-0.2588190451025206,Afternoon (12-17),250,500
61
+ 65,29,IL,1000,1726.91,0,MALE,High School,other-service,basketball,own-child,0,0,Vehicle Theft,Missing,Trivial Damage,Missing,VA,Hillsdale,14,1,Missing,0,0,Missing,7200,Audi,A5,0.1,0.2,0,8938,1,16,1,1,1,1,-0.5000000000000001,-0.8660254037844386,Afternoon (12-17),250,500
62
+ 231,43,IL,2000,972.47,0,MALE,College,protective-serv,reading,wife,0,-58100,Multi-vehicle Collision,Front Collision,Minor Damage,Police,PA,Hillsdale,15,3,YES,2,2,YES,77100,Audi,A3,0.1,0.2,0,3151,2,5,0,0,0,0,-0.7071067811865475,-0.7071067811865477,Afternoon (12-17),250,500
63
+ 195,39,OH,1000,1393.57,0,MALE,PhD,machine-op-inspct,movies,not-in-family,47600,-39600,Parked Car,Missing,Minor Damage,Police,VA,Northbend,5,1,NO,0,1,YES,2640,Ford,F150,0.1818181818181818,0.1818181818181818,0,194,2,6,1,0,0,0,0.9659258262890684,0.2588190451025207,Night (0-5),250,500
64
+ 93,31,IL,2000,1017.18,0,FEMALE,MD,prof-specialty,paintball,husband,0,0,Multi-vehicle Collision,Rear Collision,Major Damage,Police,NC,Arlington,21,3,YES,1,3,NO,48070,Saab,92x,0.1818181818181818,0.1818181818181818,0,2591,2,1,0,0,0,0,-0.7071067811865477,0.7071067811865474,Evening (18-23),100,300
65
+ 404,53,IN,500,767.14,0,MALE,Associate,sales,reading,not-in-family,25500,-36700,Parked Car,Missing,Trivial Damage,Police,WV,Columbus,8,1,NO,0,1,NO,8800,Suburu,Legacy,0.2,0.1,0,35,1,13,1,0,0,0,0.8660254037844387,-0.4999999999999998,Morning (6-11),250,500
66
+ 75,27,OH,1000,1141.1,0,MALE,JD,armed-forces,movies,other-relative,0,0,Multi-vehicle Collision,Side Collision,Minor Damage,Police,SC,Hillsdale,15,2,Missing,0,1,YES,71640,Toyota,Highlander,0.0833333333333333,0.1666666666666666,0,7750,2,7,0,0,1,0,-0.7071067811865475,-0.7071067811865477,Afternoon (12-17),100,300
67
+ 137,35,IN,500,1667.83,0,MALE,JD,prof-specialty,paintball,husband,48500,-67400,Parked Car,Missing,Minor Damage,Police,WV,Northbrook,4,1,YES,1,1,NO,6600,Jeep,Grand Cherokee,0.1818181818181818,0.1818181818181818,0,1791,2,10,1,0,0,0,0.8660254037844386,0.5000000000000001,Night (0-5),250,500
68
+ 211,37,OH,2000,1295.63,4000000,FEMALE,PhD,armed-forces,skydiving,not-in-family,42200,-33800,Multi-vehicle Collision,Front Collision,Total Loss,Police,WV,Northbend,22,3,YES,1,0,Missing,53460,Honda,CRV,0.1111111111111111,0.1111111111111111,0,1485,1,6,0,0,0,1,-0.5000000000000004,0.8660254037844384,Evening (18-23),250,500
69
+ 152,33,IN,1000,1034.27,0,FEMALE,JD,armed-forces,exercise,husband,0,0,Single Vehicle Collision,Front Collision,Minor Damage,Fire,NY,Hillsdale,18,1,NO,1,0,NO,63900,Accura,TL,0.1111111111111111,0.1111111111111111,0,4989,2,1,0,0,0,0,-1.0,-1.8369701987210294e-16,Evening (18-23),100,300
70
+ 271,42,OH,500,1105.49,0,FEMALE,Associate,prof-specialty,sleeping,own-child,56200,-50000,Multi-vehicle Collision,Side Collision,Major Damage,Other,SC,Hillsdale,12,2,Missing,2,3,Missing,68310,Audi,A3,0.1818181818181818,0.0909090909090909,1,1285,2,12,0,0,1,1,1.2246467991473532e-16,-1.0,Afternoon (12-17),100,300
71
+ 37,25,OH,1000,1221.17,0,FEMALE,Masters,protective-serv,golf,not-in-family,49300,0,Multi-vehicle Collision,Rear Collision,Minor Damage,Ambulance,SC,Northbrook,4,3,YES,0,0,YES,51030,Suburu,Impreza,0.1111111111111111,0.2222222222222222,0,4344,1,19,0,0,0,0,0.8660254037844386,0.5000000000000001,Night (0-5),100,300
72
+ 118,28,IN,2000,1207.36,0,FEMALE,High School,handlers-cleaners,camping,own-child,0,-57000,Multi-vehicle Collision,Front Collision,Major Damage,Ambulance,WV,Columbus,22,2,NO,1,0,Missing,74200,Volkswagen,Passat,0.1,0.2,0,8464,3,18,0,0,0,1,-0.5000000000000004,0.8660254037844384,Evening (18-23),500,1000
73
+ 231,43,IN,2000,1331.69,0,FEMALE,Masters,adm-clerical,reading,not-in-family,0,0,Single Vehicle Collision,Rear Collision,Minor Damage,Police,NY,Northbend,12,1,Missing,1,2,NO,66950,Chevrolet,Malibu,0.1538461538461538,0.1538461538461538,0,1763,2,0,0,0,1,0,1.2246467991473532e-16,-1.0,Afternoon (12-17),100,300
74
+ 193,40,OH,500,1233.85,0,FEMALE,College,handlers-cleaners,chess,husband,0,0,Multi-vehicle Collision,Side Collision,Total Loss,Ambulance,PA,Hillsdale,23,3,Missing,2,1,YES,64260,Ford,Escape,0.0,0.2222222222222222,0,3655,2,16,0,0,1,0,-0.2588190451025207,0.9659258262890684,Evening (18-23),100,300
75
+ 100,33,OH,500,1124.59,6000000,MALE,College,adm-clerical,golf,not-in-family,67300,0,Single Vehicle Collision,Rear Collision,Minor Damage,Other,NC,Columbus,4,1,NO,1,2,NO,40800,BMW,X5,0.1666666666666666,0.1666666666666666,0,3602,2,11,0,0,0,0,0.8660254037844386,0.5000000000000001,Night (0-5),250,500
76
+ 39,31,IL,2000,1366.9,0,FEMALE,High School,handlers-cleaners,polo,husband,0,-15700,Multi-vehicle Collision,Rear Collision,Major Damage,Fire,NC,Northbend,14,3,Missing,1,0,NO,52700,BMW,X6,0.2,0.2,1,4383,1,1,0,0,1,0,-0.5000000000000001,-0.8660254037844386,Afternoon (12-17),250,500
77
+ 40,39,IN,1000,1248.25,4000000,FEMALE,College,sales,hiking,own-child,0,-33300,Parked Car,Missing,Minor Damage,Police,VA,Northbrook,8,1,NO,0,2,Missing,8760,BMW,3 Series,0.1666666666666666,0.1666666666666666,0,5058,2,2,1,0,0,1,0.8660254037844387,-0.4999999999999998,Morning (6-11),500,1000
78
+ 356,54,OH,500,912.3,0,MALE,College,prof-specialty,yachting,wife,58500,-44000,Multi-vehicle Collision,Front Collision,Major Damage,Other,SC,Northbend,23,3,NO,2,1,Missing,68750,Audi,A5,0.1818181818181818,0.1818181818181818,1,2526,1,8,0,0,0,1,-0.2588190451025207,0.9659258262890684,Evening (18-23),500,1000
79
+ 199,37,IN,500,1262.08,0,MALE,JD,tech-support,video-games,wife,48500,0,Single Vehicle Collision,Front Collision,Major Damage,Ambulance,NC,Columbus,4,1,Missing,0,3,NO,60170,Nissan,Pathfinder,0.1818181818181818,0.1818181818181818,1,6374,1,4,0,0,1,0,0.8660254037844386,0.5000000000000001,Night (0-5),250,500
80
+ 75,25,IL,1000,1389.86,0,FEMALE,Associate,priv-house-serv,hiking,husband,0,0,Multi-vehicle Collision,Side Collision,Total Loss,Other,WV,Springfield,23,2,Missing,2,3,YES,65100,Saab,93,0.1,0.1,0,1143,1,4,0,0,1,0,-0.2588190451025207,0.9659258262890684,Evening (18-23),500,1000
81
+ 151,37,IN,500,1366.42,0,FEMALE,Associate,protective-serv,cross-fit,unmarried,44000,0,Multi-vehicle Collision,Rear Collision,Total Loss,Fire,SC,Arlington,14,3,NO,1,2,YES,59100,Nissan,Maxima,0.1,0.1,1,850,2,17,0,0,0,0,-0.5000000000000001,-0.8660254037844386,Afternoon (12-17),250,500
82
+ 148,30,OH,500,1471.24,0,FEMALE,Masters,farming-fishing,camping,own-child,57500,-93600,Multi-vehicle Collision,Side Collision,Minor Damage,Police,NC,Riverwood,4,3,NO,2,2,NO,32480,Dodge,Neon,0.125,0.125,0,4660,1,18,0,0,0,0,0.8660254037844386,0.5000000000000001,Night (0-5),100,300
83
+ 107,31,IN,500,1239.22,7000000,FEMALE,High School,tech-support,paintball,not-in-family,43400,-91200,Single Vehicle Collision,Side Collision,Minor Damage,Fire,SC,Springfield,12,1,YES,0,1,NO,89700,Audi,A5,0.1538461538461538,0.1538461538461538,1,1262,1,6,0,0,0,0,1.2246467991473532e-16,-1.0,Afternoon (12-17),250,500
84
+ 243,43,IN,500,1307.74,0,FEMALE,Associate,machine-op-inspct,board-games,own-child,0,-75700,Multi-vehicle Collision,Front Collision,Major Damage,Ambulance,SC,Riverwood,10,3,Missing,0,1,NO,37530,Jeep,Wrangler,0.1111111111111111,0.1111111111111111,0,3281,1,7,0,0,1,0,0.4999999999999999,-0.8660254037844387,Morning (6-11),500,1000
85
+ 478,64,OH,500,835.02,0,FEMALE,Associate,adm-clerical,reading,unmarried,59600,0,Multi-vehicle Collision,Side Collision,Minor Damage,Fire,WV,Hillsdale,17,3,NO,1,1,NO,33930,BMW,X6,0.0,0.1111111111111111,0,8932,2,17,0,0,0,0,-0.9659258262890684,-0.2588190451025206,Afternoon (12-17),250,500
86
+ 1,33,IL,500,903.32,0,FEMALE,High School,transport-moving,yachting,not-in-family,0,0,Multi-vehicle Collision,Rear Collision,Minor Damage,Police,NY,Northbend,1,3,Missing,1,0,Missing,31700,Toyota,Highlander,0.2,0.1,0,7062,1,9,0,0,1,1,0.2588190451025207,0.9659258262890684,Night (0-5),250,500
87
+ 210,38,IN,500,999.52,0,MALE,JD,tech-support,golf,other-relative,0,0,Vehicle Theft,Missing,Minor Damage,Police,VA,Springfield,6,1,Missing,1,2,NO,8640,Accura,TL,0.1666666666666666,0.0833333333333333,0,5869,1,7,1,0,1,0,1.0,6.123233995736766e-17,Morning (6-11),250,500
88
+ 458,62,IL,2000,1356.92,5000000,MALE,Associate,handlers-cleaners,base-jumping,wife,0,0,Single Vehicle Collision,Rear Collision,Major Damage,Other,NY,Arlington,2,1,Missing,0,1,YES,46980,Audi,A5,0.1111111111111111,0.1111111111111111,0,1196,2,17,0,0,1,0,0.4999999999999999,0.8660254037844387,Night (0-5),500,1000
89
+ 475,61,IL,500,1265.72,0,FEMALE,Masters,handlers-cleaners,paintball,wife,0,-59500,Single Vehicle Collision,Front Collision,Major Damage,Fire,SC,Columbus,23,1,YES,0,2,Missing,64350,Mercedes,E400,0.1538461538461538,0.1538461538461538,0,3842,2,17,0,0,0,1,-0.2588190451025207,0.9659258262890684,Evening (18-23),500,1000
90
+ 435,58,IN,2000,1145.85,0,MALE,JD,sales,movies,not-in-family,0,-40000,Multi-vehicle Collision,Rear Collision,Total Loss,Other,NY,Columbus,19,3,Missing,1,1,YES,41490,Mercedes,E400,0.2222222222222222,0.1111111111111111,0,6265,1,11,0,0,1,0,-0.9659258262890684,0.2588190451025203,Evening (18-23),100,300
91
+ 276,47,IN,1000,1724.09,0,MALE,PhD,craft-repair,yachting,own-child,0,0,Multi-vehicle Collision,Rear Collision,Minor Damage,Police,NY,Arlington,23,3,YES,0,0,Missing,65780,Chevrolet,Tahoe,0.0909090909090909,0.1818181818181818,0,7878,1,1,0,0,0,1,-0.2588190451025207,0.9659258262890684,Evening (18-23),100,300
92
+ 113,29,OH,2000,1091.73,0,MALE,PhD,exec-managerial,golf,not-in-family,36100,-42300,Multi-vehicle Collision,Rear Collision,Minor Damage,Other,NY,Springfield,15,3,Missing,0,2,YES,49950,Nissan,Ultima,0.1111111111111111,0.1111111111111111,1,2561,1,11,0,0,1,0,-0.7071067811865475,-0.7071067811865477,Afternoon (12-17),250,500
93
+ 88,30,IN,1000,1437.88,0,FEMALE,College,transport-moving,reading,husband,42800,-51200,Single Vehicle Collision,Side Collision,Total Loss,Fire,SC,Northbrook,3,1,NO,2,0,YES,56000,Chevrolet,Malibu,0.25,0.0,0,8239,2,12,0,0,0,0,0.7071067811865475,0.7071067811865476,Night (0-5),100,300
94
+ 220,42,IN,1000,1281.72,0,MALE,College,farming-fishing,hiking,other-relative,33500,-49500,Multi-vehicle Collision,Rear Collision,Minor Damage,Fire,SC,Northbend,20,4,NO,0,2,YES,47740,Honda,Civic,0.0909090909090909,0.0909090909090909,0,7494,2,10,0,0,0,0,-0.8660254037844386,0.5000000000000001,Evening (18-23),100,300
95
+ 328,46,IL,500,1314.6,0,FEMALE,MD,prof-specialty,exercise,not-in-family,24800,0,Single Vehicle Collision,Rear Collision,Total Loss,Other,WV,Hillsdale,0,1,Missing,2,3,Missing,70290,Saab,92x,0.1818181818181818,0.0909090909090909,1,6823,2,17,0,0,1,1,0.0,1.0,Night (0-5),500,1000
96
+ 133,30,IN,1000,1231.01,0,MALE,College,adm-clerical,board-games,husband,0,-31700,Multi-vehicle Collision,Front Collision,Minor Damage,Fire,SC,Riverwood,19,3,NO,1,2,Missing,28440,Dodge,Neon,0.1111111111111111,0.1111111111111111,0,3420,2,8,0,0,0,1,-0.9659258262890684,0.2588190451025203,Evening (18-23),500,1000
97
+ 61,23,IL,500,1111.72,0,MALE,JD,exec-managerial,bungie-jumping,other-relative,54600,0,Single Vehicle Collision,Side Collision,Major Damage,Fire,PA,Riverwood,6,1,Missing,1,2,Missing,41850,Suburu,Legacy,0.1111111111111111,0.1111111111111111,0,2910,2,18,0,0,1,1,1.0,6.123233995736766e-17,Morning (6-11),100,300
98
+ 366,50,IN,1000,1561.41,0,FEMALE,High School,handlers-cleaners,basketball,husband,21200,0,Multi-vehicle Collision,Rear Collision,Minor Damage,Police,NY,Arlington,5,3,YES,1,3,NO,70290,Mercedes,C300,0.1818181818181818,0.1818181818181818,0,8946,1,3,0,0,0,0,0.9659258262890684,0.2588190451025207,Night (0-5),500,1000
99
+ 31,36,IL,2000,1318.24,9000000,FEMALE,College,prof-specialty,kayaking,not-in-family,0,-78600,Parked Car,Missing,Trivial Damage,Missing,WV,Arlington,9,1,NO,0,1,YES,4700,Dodge,Neon,0.2,0.1,0,5647,1,13,1,1,0,0,0.7071067811865476,-0.7071067811865475,Morning (6-11),500,1000
100
+ 215,42,OH,500,1848.81,0,MALE,JD,transport-moving,video-games,own-child,0,-49000,Multi-vehicle Collision,Front Collision,Major Damage,Fire,WV,Northbend,20,3,YES,2,2,YES,68520,Suburu,Legacy,0.1666666666666666,0.0833333333333333,1,2292,2,12,0,0,0,0,-0.8660254037844386,0.5000000000000001,Evening (18-23),500,1000
101
+ 179,32,OH,2000,1246.68,0,FEMALE,PhD,priv-house-serv,movies,own-child,0,0,Single Vehicle Collision,Front Collision,Minor Damage,Fire,NY,Arlington,10,1,Missing,0,1,Missing,53100,Suburu,Impreza,0.1111111111111111,0.1111111111111111,0,6618,1,9,0,0,1,1,0.4999999999999999,-0.8660254037844387,Morning (6-11),500,1000