Um den Code mit deinen eigenen Werten zu verwenden, musst du die folgenden Platzhalter in den angegebenen Zeilen ersetzen: Zeile 15: model = joblib.load('[YOUR_MODEL_FILE]')Ersetze [YOUR_MODEL_FILE] durch den Pfad und Namen deiner trainierten Modell-Datei (joblib-Format). Beispiel: model = joblib.load('solar_forecast_model.pkl') Zeile 21: df = pd.read_csv('[YOUR_DATA_FILE]', index_col=0, parse_dates=True)Ersetze [YOUR_DATA_FILE] durch den Pfad und Namen deiner Trainingsdaten-Datei (CSV-Format). Beispiel: df = pd.read_csv('solar_data_clean.csv', index_col=0, parse_dates=True) Zeile 38: with open('[YOUR_OUTPUT_FILE]', 'w') as f:Ersetze [YOUR_OUTPUT_FILE] durch den gewünschten Pfad und Namen der Ausgabedatei für die Modell-Gewichte (JSON-Format). Beispiel: with open('simple_model_weights.json', 'w') as f: Hinweise:Modell-Datei ([YOUR_MODEL_FILE]): Die Datei muss ein trainiertes Machine-Learning-Modell enthalten, das mit joblib gespeichert wurde. Der Code erwartet, dass das Modell mit den gleichen Features arbeitet, die in feature_cols definiert sind (radiation, lux, temp, hour, day_of_year). Trainingsdaten-Datei ([YOUR_DATA_FILE]): Die CSV-Datei muss die Spalten radiation, lux, temp, hour, day_of_year und ertrag_daily enthalten, da der Code diese Spalten für das Training des vereinfachten Modells verwendet. Der Index sollte ein Datum sein (wird durch index_col=0, parse_dates=True gesetzt). Ausgabedatei ([YOUR_OUTPUT_FILE]): Die JSON-Datei speichert die Koeffizienten des vereinfachten linearen Modells. Stelle sicher, dass der Pfad schreibbar ist. Dateipfade: Die Pfade für [YOUR_MODEL_FILE], [YOUR_DATA_FILE] und [YOUR_OUTPUT_FILE] können relativ (z. B. 'solar_forecast_model.pkl') oder absolut (z. B. 'C:/Pfad/zur/datei.pkl') sein, je nachdem, wo sich die Dateien befinden. Voraussetzungen: Der Code erwartet, dass die Trainingsdaten und das Modell konsistent sind. Stelle sicher, dass die feature_cols im Code mit den tatsächlichen Spalten in deiner CSV-Datei übereinstimmen. Nachdem du die Platzhalter ersetzt hast, kannst du den Code ausführen, um die Gewichte eines vereinfachten linearen Modells zu extrahieren, diese als JSON zu speichern und die Genauigkeit im Vergleich zum komplexen Modell zu bewerten. Code: #!/usr/bin/env python3 """ Extrahiere Modell-Gewichte aus dem trainierten Modell Führe dies auf deinem Mac aus! """ import joblib import json import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_absolute_error, r2_score # Lade das trainierte Modell model = joblib.load('[YOUR_MODEL_FILE]') print("Modell-Typ:", type(model).__name__) # Für GradientBoosting können wir die Baumstruktur nicht einfach exportieren # Stattdessen erstellen wir ein vereinfachtes lineares Modell basierend auf den Trainingsdaten # Lade die Trainingsdaten df = pd.read_csv('[YOUR_DATA_FILE]', index_col=0, parse_dates=True) feature_cols = ['radiation', 'lux', 'temp', 'hour', 'day_of_year'] X = df[feature_cols].values y = df['ertrag_daily'].values # Berechne lineare Regression Koeffizienten (Fallback-Modell) simple_model = LinearRegression() simple_model.fit(X, y) # Extrahiere Koeffizienten weights = { 'coefficients': simple_model.coef_.tolist(), 'intercept': float(simple_model.intercept_), 'feature_names': feature_cols, 'model_type': 'linear_regression', 'note': 'Vereinfachtes lineares Modell für HA ohne scikit-learn' } # Speichere als JSON with open('[YOUR_OUTPUT_FILE]', 'w') as f: json.dump(weights, f, indent=2) print("\n✓ Vereinfachte Modell-Gewichte gespeichert!") print("\nKoeffizienten:") for name, coef in zip(feature_cols, simple_model.coef_): print(f" {name}: {coef:.6f}") print(f" intercept: {simple_model.intercept_:.6f}") # Teste Genauigkeit y_pred = simple_model.predict(X) mae = mean_absolute_error(y, y_pred) r2 = r2_score(y, y_pred) print(f"\nGenauigkeit des vereinfachten Modells:") print(f" MAE: {mae:.3f} kWh") print(f" R²: {r2:.3f}") # Vergleiche mit dem komplexen Modell y_pred_complex = model.predict(X) mae_complex = mean_absolute_error(y, y_pred_complex) r2_complex = r2_score(y, y_pred_complex) print(f"\nZum Vergleich - Komplexes Modell:") print(f" MAE: {mae_complex:.3f} kWh") print(f" R²: {r2_complex:.3f}") print(f"\nGenauigkeitsverlust: {((mae - mae_complex) / mae_complex * 100):.1f}%")