https://github.com/baris-enes/pumpen-maintenance
Prädiktive Wartung von Pumpen in der chemischen Industrie mit Feature Engineering, Clustering und XGBoost
https://github.com/baris-enes/pumpen-maintenance
chemie clustering engineer industrie maintenance predictive pumps sklearn
Last synced: about 1 month ago
JSON representation
Prädiktive Wartung von Pumpen in der chemischen Industrie mit Feature Engineering, Clustering und XGBoost
- Host: GitHub
- URL: https://github.com/baris-enes/pumpen-maintenance
- Owner: baris-enes
- Created: 2025-06-14T20:15:03.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-06-14T20:55:03.000Z (12 months ago)
- Last Synced: 2025-06-22T10:03:26.582Z (12 months ago)
- Topics: chemie, clustering, engineer, industrie, maintenance, predictive, pumps, sklearn
- Language: Jupyter Notebook
- Homepage:
- Size: 1.5 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Predictive Maintenance für Industriepumpen
Dieses Projekt demonstriert einen vollständigen Machine-Learning-Workflow zur prädiktiven Wartung von Industriepumpen – mit besonderem Fokus auf die **chemische Industrie**. Durch gezieltes Feature Engineering und datengetriebenes Clustering entsteht ein belastbares Simulationsmodell zur frühzeitigen Erkennung von Wartungsbedarf.
---
## Datengrundlage
Die zugrundeliegenden Daten stammen aus einem synthetischen Pumpenbetriebsszenario. Jeder Datenpunkt beschreibt den Zustand einer Pumpe mit Messgrößen wie:
- **Temperature** (°C)
- **Vibration** (mm/s)
- **Pressure** (bar)
- **Flow Rate** (m³/h)
- **RPM** (Drehzahl)
- **Operational Hours** (h)
Zusätzlich enthält der Datensatz die Zielvariable `Maintenance_Flag` (0 = kein Wartungsbedarf, 1 = Wartung notwendig). Allerdings zeigte sich, dass dieses Label **kaum trennscharf** war (Verhältnis nahezu 50/50, kaum Korrelation zu Features). Daher wurde im Projektverlauf eine **simulierte Zielvariable** eingeführt, um ein realistisches und erklärbares Wartungsmodell zu ermöglichen.
---
## Projektübersicht
1. **Datenexploration & Ausgangssituation**
2. **Physikalisch motiviertes Feature Engineering**
3. **Clustering & Label-Simulation**
4. **Modelltraining & Hyperparameter-Optimierung (Grid Search)**
5. **Evaluation mit Konfusionsmatrix**
---
## Verwendete Tools & Bibliotheken
- **Python 3.8+**
- **pandas** – Datenmanipulation & Einlesen (`pd.read_csv`)
- **NumPy** – numerische Berechnungen (`np.log1p`, Arithmetik)
- **scikit-learn**
- `StandardScaler`, `PCA`, `KMeans` (Clustering)
- `train_test_split`, `GridSearchCV` (Modell-Validierung)
- `classification_report`, `confusion_matrix` (Metriken)
- **XGBoost** (`xgboost.XGBClassifier`) – Gradient Boosted Trees
- **matplotlib** & **seaborn** – Visualisierung (Heatmaps, Scatter, Bar Charts, Confusion Matrix)
> **Hinweis:** TensorFlow oder andere Deep-Learning-Frameworks kamen **nicht** zum Einsatz – der Fokus liegt auf klassischer ML-Pipeline.
---
## Installation
```bash
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
pip install -r requirements.txt
```
*requirements.txt* sollte enthalten:
```
pandas
numpy
scikit-learn
xgboost
matplotlib
seaborn
```
---
## Methodik
### Feature Engineering
Gezielt eingeführte Features mit physikalischem Bezug:
| Feature | Formel | Bedeutung |
|--------------------------|----------------------------------|--------------------------------------|
| Power | Pressure × Flow Rate | Hydraulische Leistung |
| Vibration_per_hour | Vibration / Operational_Hours | Belastungsrate |
| Efficiency | Power / RPM | Betriebseffizienz |
| Cumulative_Load | Vibration × Operational_Hours | Gesamtbelastung über Zeit |
| Log_Vibration_per_hour | log(1 + Vibration_per_hour) | Skalierung zur Varianzreduktion |
Diese Features führten zu einer **deutlich erhöhten Korrelation mit dem Wartungsbedarf** (sichtbar in Korrelationsmatrizen vor/nach Feature Engineering).
### Clustering & Label-Simulation
Da das ursprüngliche Label unbrauchbar war, wurde ein **simuliertes Labeling durch domänengetriebene Regeln** durchgeführt:
- **PCA → KMeans mit 3 Clustern**
- Neue Zielvariable: `Maintenance_Flag_Sim_Final`
- **Cluster 2** = immer Wartung notwendig
- **Cluster 0** = nie Wartung
- **Cluster 1** = Regelbasiert:
- Hohe kumulative Belastung & niedrige Effizienz ⇒ Wartung
### Modelltraining & Grid Search
- Modell: `XGBClassifier`
- Ziel: Optimierung auf **F1-Score**
- Beste Parameter laut GridSearch:
```
n_estimators: 200
max_depth: 3
learning_rate: 0.10
subsample: 0.80
colsample_bytree: 0.80
```
### Evaluation
Die finale Konfusionsmatrix zeigt eine **nahezu perfekte Klassifikation** auf Basis der simulierten Labels.
---
## Relevanz für die chemische Industrie
In der chemischen Industrie sind Pumpen zentrale Aggregate zur Förderung von Medien wie:
- **Säuren, Laugen, Lösungsmittel, Emulsionen**
- Stoffe mit **hoher Viskosität** oder **abrasiven Eigenschaften**
- Medien mit **kritischen Temperatur- und Druckanforderungen**
Daher sind vorausschauende Wartungsstrategien essenziell. Dieses Projekt zeigt, wie:
- **Prozessdaten + domänenspezifisches Wissen**
- zu **robusten Features** führen
- und daraus **frühzeitige Wartungsempfehlungen** generiert werden können.
---
## Lessons Learned
- **Physik schlägt Zufall:** Nur durch Feature Engineering entstand echte Korrelation
- **Domain-Knowledge + Clustering** helfen bei der Labelkonstruktion
- **ML-Modelle sind nur so gut wie ihre Eingangsdaten** – Featurequalität entscheidet
---
## Nächste Schritte
- Einbindung von **Medienkennwerten** wie Dichte, Korrosivität, chemischer Zusammensetzung
- - Erweiterung um **Zeitreihenanalysen mit TensorFlow**:
- Gleitende Mittelwerte (Rolling Features)
- Differenzen (z. B. ΔVibration)
- Trend-Erkennung mit LSTM oder TCN-Modellen
- Ziel: Frühzeitige Detektion schleichender Defekte
- Umsetzung als **API-Service** (z. B. FastAPI + Docker)
- Integration in Dashboard (z. B. Streamlit, Dash) für Produktionsleiter
---
*© 2025 Enes Baris – Die Daten basieren auf einem simulierten Pumpenbetrieb mit realitätsnahen, aber synthetisch erzeugten Zustandsparametern*