Commit Graph

603 Commits

Author SHA1 Message Date
7dd6867dee bugfix 2025-06-19 16:30:12 +00:00
1c5300323c bugfix 2025-06-19 14:27:34 +00:00
ac3735a7f6 bugfix 2025-06-19 14:04:15 +00:00
eba8d32ded bugfix 2025-06-19 10:13:35 +00:00
3310274a70 bugfix 2025-06-19 09:54:59 +00:00
5eaa8a1fb4 bugfix 2025-06-19 09:44:33 +00:00
b9eeec461d bugfix 2025-06-19 09:39:12 +00:00
c6d617957f bugfix 2025-06-19 09:33:22 +00:00
68bfd117b4 bugfix 2025-06-19 09:25:07 +00:00
b28ce3fabd bugfix 2025-06-19 09:07:56 +00:00
0df84f0cc0 bugfix 2025-06-19 09:00:13 +00:00
4f7f659f81 bugfix 2025-06-19 06:55:05 +00:00
ff1e3904e3 bugfix 2025-06-19 06:34:10 +00:00
5d38cb294f Umstellung auf Branchen-Gruppen für ML-Features
- Feature Engineering: Der ML-Prozess verwendet nun übergeordnete Branchen-Gruppen anstelle der detaillierten Einzelbranchen als kategoriales Feature.
- Branchen-Mapping: Eine neue Logik liest eine externe Mapping-Datei (`Branchen.csv`), um die vom KI-System vorgeschlagenen Detailbranchen (aus Spalte AL) ihren jeweiligen Branchen-Gruppen zuzuordnen.
- Reduzierte Dimensionalität: Durch das Clustering der Branchen wird die Anzahl der One-Hot-encodierten Features signifikant reduziert. Dies erhöht die statistische Aussagekraft jeder Kategorie und soll die Generalisierungsfähigkeit und Genauigkeit des Modells verbessern.
- Code-Anpassungen: Die Methode `prepare_data_for_modeling` wurde angepasst, um das Branchen-Mapping durchzuführen und das One-Hot-Encoding auf den neuen Branchen-Gruppen anzuwenden. Die Methode `_predict_technician_bucket` muss entsprechend angepasst werden, um dieselbe Logik für die Vorhersage zu spiegeln.
2025-06-19 06:23:16 +00:00
bae3c9b820 bugfix 2025-06-18 14:40:12 +00:00
da30481b47 bugfix 2025-06-18 14:31:08 +00:00
1c9471a8dd Feat: Hyperparameter-Tuning mit GridSearchCV und SMOTE-Pipeline für ML
- Implementierung von Hyperparameter-Tuning: Der Trainingsprozess (`train_technician_model`) verwendet nun `GridSearchCV` von scikit-learn, um systematisch die besten Hyperparameter für das RandomForest-Modell zu finden.
- Integration einer imblearn-Pipeline: SMOTE (zur Klassen-Balancierung) und der RandomForestClassifier wurden in eine `imblearn.pipeline.Pipeline` integriert. Dies stellt sicher, dass das Oversampling bei der Kreuzvalidierung korrekt nur auf den Trainings-Folds angewendet wird, um Datenlecks zu vermeiden.
- Erweiterte Modellevaluation: Der beste durch GridSearchCV gefundene Estimator wird nun für die finale Evaluation auf dem Testset verwendet und als finales Modell gespeichert. Die besten gefundenen Parameter und die Cross-Validation-Genauigkeit werden geloggt.
- Code-Struktur: Die `train_technician_model`-Methode wurde umfassend überarbeitet, um die neue Pipeline- und GridSearchCV-Logik zu implementieren. Entsprechende Imports (`GridSearchCV`, `ImbPipeline`) wurden hinzugefügt.
2025-06-18 14:22:35 +00:00
844d65f1d6 bugfix 2025-06-18 13:56:32 +00:00
4bc4881ab6 Änderung ML auf neue Branche 2025-06-18 13:40:52 +00:00
ecb0c722fa bugfix 2025-06-18 12:17:59 +00:00
f5b7f3d19c Feat: Umstellung von Decision Tree auf RandomForest für ML-Technikerschätzung
- Umstellung des ML-Modells: Der Algorithmus zur Schätzung der Servicetechniker-Buckets wurde von einem einzelnen Decision Tree auf einen RandomForestClassifier umgestellt. Ziel ist eine höhere Vorhersagegenauigkeit und bessere Generalisierungsfähigkeit durch die Nutzung eines Ensemble-Modells.
- Verbesserte Modellevaluation: Die Ausgabe der Baumregeln (spezifisch für Decision Trees) wurde durch die Analyse und Ausgabe der Feature Importance ersetzt. Dies gibt Aufschluss darüber, welche Features (z.B. Log-Umsatz, Branche, Gruppenzugehörigkeit) den größten Einfluss auf die Vorhersagen des RandomForest-Modells haben.
- Code-Anpassungen: Die Methode `train_technician_model` wurde entsprechend überarbeitet, um den RandomForestClassifier zu instanziieren, zu trainieren, zu speichern und zu evaluieren. Der `import` für `RandomForestClassifier` wurde hinzugefügt.
2025-06-18 12:12:08 +00:00
bf7f1d0be6 bugfix 2025-06-18 09:34:59 +00:00
8602b338eb Refactor: ML-Datenvorbereitung mit neuen Features & Klassen, Bugfixes
- Refactoring der Funktion `prepare_data_for_modeling`:
  - Neue Bucket-Einteilung: Die Anzahl der Zielklassen (Techniker-Buckets) wurde zur Verbesserung der Robustheit von 7 auf 3 Klassen reduziert ('Klein', 'Mittel', 'Gross').
  - Feature Engineering: Zusätzliche Features (`Umsatz_pro_MA`, `Log_Umsatz`, `Log_Mitarbeiter`) werden nun dynamisch erstellt und für das Training verwendet, um die Vorhersagekraft zu erhöhen.
  - Feature-Auswahl: Die finalen Features für das Modelltraining wurden auf die neuen, transformierten numerischen Features umgestellt.
  - Datenfilterung: Filter für DACH-Region und Plausibilität (Ausschluss von `FEHLER`-Fällen) wurden direkt in die Datenvorbereitung integriert.
- Bugfix: Ein `NameError` in `prepare_data_for_modeling` wurde behoben. Der Code zur Erstellung des 'is_part_of_group'-Features greift nun korrekt auf die Spalten des Pandas DataFrames statt auf eine nicht existierende `row_data`-Variable zu.
- Bugfix: Ein `SyntaxError` im `col_keys_mapping`-Dictionary wurde durch ein fehlendes Komma behoben.
- Code-Struktur: Der gesamte Datenverarbeitungsfluss innerhalb von `prepare_data_for_modeling` wurde für bessere Lesbarkeit und Konsistenz überarbeitet.
2025-06-18 08:32:29 +00:00
4b126026f8 bugfix 2025-06-17 18:11:58 +00:00
8dfbaafabf bugfix 2025-06-02 14:06:07 +00:00
62d341d309 bugfix 2025-06-02 13:54:55 +00:00
737d3662dc bugfix 2025-06-02 13:43:24 +00:00
5e57faba16 bugfix 2025-06-02 13:31:06 +00:00
59a6e5b6df bugfix 2025-06-02 13:28:39 +00:00
852d1e2828 bugfix 2025-06-02 13:16:12 +00:00
17c21c2036 bugfix 2025-06-01 19:38:50 +00:00
6b145f6134 bugfix 2025-06-01 15:14:06 +00:00
d0956879c2 bugfix 2025-06-01 15:10:50 +00:00
dea43f589d bugfix 2025-06-01 14:54:18 +00:00
c7fa5392c3 bugfix 2025-06-01 14:47:26 +00:00
6a299e92c9 bugfix 2025-06-01 14:44:48 +00:00
c4d9ba7fc5 bugfix 2025-06-01 14:35:35 +00:00
09b3247999 v1.7.8: Feature 'is_part_of_group' für ML & erweiterte Konzernlogik Plausi
- Feature Engineering: Dynamische Erstellung des Features 'is_part_of_group' in `prepare_data_for_modeling` und `_predict_technician_bucket` basierend auf Spalten D (Parent Account Name) sowie O (System Vorschlag Parent Account) und P (Parent Vorschlag Status). Dieses Feature wird nun für das ML-Training und die Vorhersage verwendet.
- Plausibilitäts-Logik erweitert: `_check_financial_plausibility` berücksichtigt jetzt nicht nur Spalte D, sondern auch einen bestätigten Parent-Vorschlag aus Spalte O (mit P='x'), um die `INFO_KONZERN_LOGIK` für die Abweichungsflags (BJ, BK) anzuwenden. Die aufrufenden Stellen in `_process_single_row` und `run_plausibility_checks_batch` wurden angepasst, um die notwendigen Daten (O, P) an die Plausi-Funktion zu übergeben.
- Bugfix: `UnboundLocalError` für die Variable `bonus` in `serp_wikipedia_lookup` durch korrekte Initialisierung behoben.
- Bugfix: `KeyError` für "Timestamp letzte Pruefung" in `_process_single_row` durch korrekte Schreibweise des Spaltennamens-Schlüssels (mit "ue") behoben.
- Bugfix: `NameError` für `source_of_wiki_data_origin` im Konsolidierungs-Log-String in `_process_single_row` durch Verwendung eines Fallback-Wertes behoben.
- Code-Struktur: Debug-Logausgabe für den Inhalt von `current_wiki_url_r` in `_process_single_row` vor der Parent-Prüfung hinzugefügt.
- Code-Struktur: Korrektur der Limit-Anwendung und Entfernung eines fehlerhaften Code-Blocks in `run_plausibility_checks_batch`.
2025-06-01 14:04:44 +00:00
ea1aaa4c1d bugfix 2025-05-31 17:09:22 +00:00
4ccca0b6a2 bugfix 2025-05-31 16:46:20 +00:00
1f82a0d6be bugfix 2025-05-31 05:31:19 +00:00
fb775b5848 bugfix 2025-05-31 04:45:25 +00:00
fbee44b9ac Fix: NameError, IndentationError, UnboundLocalError & Parent-Wiki Logik
- Korrektur eines NameError in `_process_single_row` durch Verwendung der korrekten Log-Variablen `grund_message_wiki_str`.
- Behebung eines IndentationError in `process_reevaluation_rows` bei der Initialisierung von `processed_count_actual`.
- Korrektur eines UnboundLocalError in `serp_wikipedia_lookup` durch korrekte Initialisierung der `bonus`-Variable.
- Anpassung der Logik in `_process_single_row` zur Priorisierung der Parent-Wiki-Suche (aus Spalte D, dann O), wenn Spalte R (Tochter-Wiki) leer ist, bevor die allgemeine Tochter-Wiki-Verarbeitung (inkl. `force_reeval`) greift.
- Korrektur von `KeyError`s in `_process_single_row` durch Verwendung der korrekten Schreibweise (ohne Umlaute) für Spaltennamen-Schlüssel aus `COLUMN_MAP` ("Chat Begruendung Wiki Inkonsistenz", "Begruendung bei Abweichung").
- Korrektur der Limit-Prüfung in `process_reevaluation_rows`, um das Limit vor dem Aufruf von `_process_single_row` anzuwenden.
- Entfernung eines fehlerhaften Code-Blocks in `run_plausibility_checks_batch`, der einen `NameError` (Variable `updates`) verursachte. Batch-Update-Logik für `all_sheet_updates` präzisiert.
- Hinzufügen einer Debug-Logausgabe für `current_wiki_url_r` in `_process_single_row` zur besseren Analyse des Inhalts von Spalte R.
2025-05-30 19:31:07 +00:00
fadc31b41c bugfix 2025-05-30 19:16:07 +00:00
8aaa601891 bugfix 2025-05-30 17:05:08 +00:00
0b4a381861 bugfix 2025-05-30 16:55:00 +00:00
9397bf21a1 bugfix 2025-05-30 16:51:23 +00:00
bc451b7994 bugfix 2025-05-30 16:48:24 +00:00
419ee117dd brancheneinstufung.py aktualisiert 2025-05-30 15:01:17 +00:00
697ed6329f bugfix 2025-05-30 14:40:34 +00:00