File size: 1,968 Bytes
f2fa1df | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | ---
license: mit
library_name: scikit-learn
tags:
- predictive-maintenance
- engine-health
- tabular-classification
- sensor-data
metrics:
- accuracy
- precision
- recall
- f1
- roc_auc
---
# Engine Predictive Maintenance Model
This repository contains the best trained model for classifying engine condition using sensor readings.
## Business Objective
Predict whether an engine is operating normally or requires maintenance, enabling proactive intervention before failure.
## Best Model
- Model selected: `AdaBoost`
- Selection metric: F1-score
- Target column: `Engine_Condition`
## Features
- `Engine_RPM`
- `Lub_Oil_Pressure`
- `Fuel_Pressure`
- `Coolant_Pressure`
- `Lub_Oil_Temperature`
- `Coolant_Temperature`
## Label Assumption
- `0`: Normal/healthy operation
- `1`: Maintenance/faulty condition
## Test Metrics
| model_name | accuracy | precision | recall | f1 | roc_auc | best_cv_f1 | best_params |
|:-------------|-----------:|------------:|---------:|---------:|----------:|-------------:|:-----------------------------------------------------------|
| AdaBoost | 0.651139 | 0.648488 | 0.975233 | 0.778985 | 0.681114 | 0.775172 | {"model__n_estimators": 200, "model__learning_rate": 0.03} |
## Artifacts
- `best_engine_maintenance_model.joblib`: trained scikit-learn pipeline
- `model_metadata.json`: feature list, target mapping, selected hyperparameters, metrics
- `model_experiment_results.csv`: full model comparison
- `requirements.txt`: dependencies for inference
## Example Inference
```python
import joblib
import pandas as pd
model = joblib.load("best_engine_maintenance_model.joblib")
sample = pd.DataFrame([{
"Engine_RPM": 800,
"Lub_Oil_Pressure": 3.2,
"Fuel_Pressure": 6.5,
"Coolant_Pressure": 2.4,
"Lub_Oil_Temperature": 78.0,
"Coolant_Temperature": 80.0
}])
prediction = model.predict(sample)[0]
print(prediction)
```
|