Register best predictive maintenance model
Browse files- README.md +77 -0
- best_engine_maintenance_model.joblib +3 -0
- model_experiment_results.csv +7 -0
- model_metadata.json +31 -0
- requirements.txt +4 -0
README.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
library_name: scikit-learn
|
| 4 |
+
tags:
|
| 5 |
+
- predictive-maintenance
|
| 6 |
+
- engine-health
|
| 7 |
+
- tabular-classification
|
| 8 |
+
- sensor-data
|
| 9 |
+
metrics:
|
| 10 |
+
- accuracy
|
| 11 |
+
- precision
|
| 12 |
+
- recall
|
| 13 |
+
- f1
|
| 14 |
+
- roc_auc
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
# Engine Predictive Maintenance Model
|
| 18 |
+
|
| 19 |
+
This repository contains the best trained model for classifying engine condition using sensor readings.
|
| 20 |
+
|
| 21 |
+
## Business Objective
|
| 22 |
+
|
| 23 |
+
Predict whether an engine is operating normally or requires maintenance, enabling proactive intervention before failure.
|
| 24 |
+
|
| 25 |
+
## Best Model
|
| 26 |
+
|
| 27 |
+
- Model selected: `AdaBoost`
|
| 28 |
+
- Selection metric: F1-score
|
| 29 |
+
- Target column: `Engine_Condition`
|
| 30 |
+
|
| 31 |
+
## Features
|
| 32 |
+
|
| 33 |
+
- `Engine_RPM`
|
| 34 |
+
- `Lub_Oil_Pressure`
|
| 35 |
+
- `Fuel_Pressure`
|
| 36 |
+
- `Coolant_Pressure`
|
| 37 |
+
- `Lub_Oil_Temperature`
|
| 38 |
+
- `Coolant_Temperature`
|
| 39 |
+
|
| 40 |
+
## Label Assumption
|
| 41 |
+
|
| 42 |
+
- `0`: Normal/healthy operation
|
| 43 |
+
- `1`: Maintenance/faulty condition
|
| 44 |
+
|
| 45 |
+
## Test Metrics
|
| 46 |
+
|
| 47 |
+
| model_name | accuracy | precision | recall | f1 | roc_auc | best_cv_f1 | best_params |
|
| 48 |
+
|:-------------|-----------:|------------:|---------:|---------:|----------:|-------------:|:-----------------------------------------------------------|
|
| 49 |
+
| AdaBoost | 0.651139 | 0.648488 | 0.975233 | 0.778985 | 0.681114 | 0.775172 | {"model__n_estimators": 200, "model__learning_rate": 0.03} |
|
| 50 |
+
|
| 51 |
+
## Artifacts
|
| 52 |
+
|
| 53 |
+
- `best_engine_maintenance_model.joblib`: trained scikit-learn pipeline
|
| 54 |
+
- `model_metadata.json`: feature list, target mapping, selected hyperparameters, metrics
|
| 55 |
+
- `model_experiment_results.csv`: full model comparison
|
| 56 |
+
- `requirements.txt`: dependencies for inference
|
| 57 |
+
|
| 58 |
+
## Example Inference
|
| 59 |
+
|
| 60 |
+
```python
|
| 61 |
+
import joblib
|
| 62 |
+
import pandas as pd
|
| 63 |
+
|
| 64 |
+
model = joblib.load("best_engine_maintenance_model.joblib")
|
| 65 |
+
|
| 66 |
+
sample = pd.DataFrame([{
|
| 67 |
+
"Engine_RPM": 800,
|
| 68 |
+
"Lub_Oil_Pressure": 3.2,
|
| 69 |
+
"Fuel_Pressure": 6.5,
|
| 70 |
+
"Coolant_Pressure": 2.4,
|
| 71 |
+
"Lub_Oil_Temperature": 78.0,
|
| 72 |
+
"Coolant_Temperature": 80.0
|
| 73 |
+
}])
|
| 74 |
+
|
| 75 |
+
prediction = model.predict(sample)[0]
|
| 76 |
+
print(prediction)
|
| 77 |
+
```
|
best_engine_maintenance_model.joblib
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e2efd27063c329ed564058892c6acb7d14477512a0e05758898b7b0f84246105
|
| 3 |
+
size 130229
|
model_experiment_results.csv
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
model_name,accuracy,precision,recall,f1,roc_auc,best_cv_f1,best_params
|
| 2 |
+
AdaBoost,0.6511389813155875,0.6484881209503239,0.975233455136013,0.7789849197340685,0.6811138646989292,0.775172466662594,"{""model__n_estimators"": 200, ""model__learning_rate"": 0.03}"
|
| 3 |
+
Bagging,0.6511389813155875,0.659976730657359,0.9212342671538774,0.7690221996271819,0.6480291977780852,0.7658860957610526,"{""model__n_estimators"": 150, ""model__max_samples"": 1.0, ""model__max_features"": 0.6}"
|
| 4 |
+
Gradient_Boosting,0.6647043767596621,0.684244167465644,0.8692651238327244,0.7657367668097281,0.700410676347899,0.7674745413885123,"{""model__subsample"": 1.0, ""model__n_estimators"": 100, ""model__max_depth"": 2, ""model__learning_rate"": 0.05}"
|
| 5 |
+
XGBoost,0.6613770156130023,0.6796973518284993,0.8753552578156719,0.7652173913043478,0.6967336806340487,0.7703872294098518,"{""model__subsample"": 1.0, ""model__n_estimators"": 50, ""model__max_depth"": 3, ""model__learning_rate"": 0.05, ""model__colsample_bytree"": 1.0}"
|
| 6 |
+
Random_Forest,0.6649603276170976,0.687094682230869,0.8603329273244011,0.7640165855417342,0.700493059046745,0.7655985568463354,"{""model__n_estimators"": 300, ""model__min_samples_leaf"": 2, ""model__max_depth"": 8, ""model__class_weight"": null}"
|
| 7 |
+
Decision_Tree,0.6403890453033018,0.687057991513437,0.7888753552578157,0.7344547344547344,0.6686565040718985,0.7440265771431916,"{""model__min_samples_split"": 2, ""model__min_samples_leaf"": 1, ""model__max_depth"": 3, ""model__class_weight"": null}"
|
model_metadata.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"created_at": "2026-05-01T22:37:39.738362Z",
|
| 3 |
+
"best_model_name": "AdaBoost",
|
| 4 |
+
"target_column": "Engine_Condition",
|
| 5 |
+
"feature_columns": [
|
| 6 |
+
"Engine_RPM",
|
| 7 |
+
"Lub_Oil_Pressure",
|
| 8 |
+
"Fuel_Pressure",
|
| 9 |
+
"Coolant_Pressure",
|
| 10 |
+
"Lub_Oil_Temperature",
|
| 11 |
+
"Coolant_Temperature"
|
| 12 |
+
],
|
| 13 |
+
"label_assumption": {
|
| 14 |
+
"0": "normal_or_healthy",
|
| 15 |
+
"1": "maintenance_or_faulty"
|
| 16 |
+
},
|
| 17 |
+
"selection_metric": "f1",
|
| 18 |
+
"best_model_metrics": {
|
| 19 |
+
"model_name": "AdaBoost",
|
| 20 |
+
"accuracy": 0.6511389813155875,
|
| 21 |
+
"precision": 0.6484881209503239,
|
| 22 |
+
"recall": 0.975233455136013,
|
| 23 |
+
"f1": 0.7789849197340685,
|
| 24 |
+
"roc_auc": 0.6811138646989292,
|
| 25 |
+
"best_cv_f1": 0.775172466662594
|
| 26 |
+
},
|
| 27 |
+
"best_params": {
|
| 28 |
+
"model__n_estimators": 200,
|
| 29 |
+
"model__learning_rate": 0.03
|
| 30 |
+
}
|
| 31 |
+
}
|
requirements.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pandas
|
| 2 |
+
numpy
|
| 3 |
+
scikit-learn
|
| 4 |
+
joblib
|