diff --git a/data_processor.py b/data_processor.py index 2663ac8e..50ae48d3 100644 --- a/data_processor.py +++ b/data_processor.py @@ -5704,23 +5704,29 @@ class DataProcessor: "Starte Evaluation des besten Modells auf dem ungesehenen Testset...") y_pred = best_classifier.predict(X_test) accuracy = accuracy_score(y_test, y_pred) - self.logger.info( - f"Finale Modell Genauigkeit auf dem Testset: {accuracy:.4f}") + self.logger.info(f"Finale Modell Genauigkeit auf dem Testset: {accuracy:.4f}") - class_report_labels = list(best_classifier.classes_) # << KORRIGIERT - class_report = classification_report( + # Erzeuge den Klassifikationsbericht als Dictionary für eine saubere Ausgabe + report_dict = classification_report( y_test, y_pred, zero_division=0, - labels=class_report_labels, - target_names=[ - str(c) for c in class_report_labels]) - self.logger.info( - f"Klassifikationsbericht auf dem Testset:\n{class_report}") + labels=self.model.classes_, + target_names=[str(c) for c in self.model.classes_], + output_dict=True + ) + + # Konvertiere das Dictionary in einen formatierten DataFrame für das Logging + report_df = pd.DataFrame(report_dict).transpose() + report_df['support'] = report_df['support'].astype(int) # Für saubere Darstellung + + # Erstelle einen gut lesbaren String aus dem DataFrame + report_string = report_df.to_string() + self.logger.info(f"Klassifikationsbericht auf dem Testset:\n{report_string}") - cm = confusion_matrix(y_test, y_pred, labels=class_report_labels) - self.logger.info( - f"Konfusionsmatrix auf dem Testset (Zeilen=Wahr, Spalten=Vorhersage):\n{cm}") + cm = confusion_matrix(y_test, y_pred, labels=self.model.classes_) + cm_df = pd.DataFrame(cm, index=self.model.classes_, columns=self.model.classes_) + self.logger.info(f"Konfusionsmatrix auf dem Testset (Zeilen=Wahr, Spalten=Vorhersage):\n{cm_df.to_string()}") # Block für Feature Importance try: