فهرست منبع

5/13 输出合并到一个 文件里

ziqidai11 3 هفته پیش
والد
کامیت
5bf6f102e7
3فایلهای تغییر یافته به همراه28 افزوده شده و 22 حذف شده
  1. 28 14
      WTI/Rbob.py
  2. 0 8
      WTI/model_metrics.json
  3. BIN
      WTI/update.xlsx

+ 28 - 14
WTI/Rbob.py

@@ -362,12 +362,7 @@ def evaluate_and_predict(model, scaler, X_tr, y_tr, X_te, y_te, X_fu, use_tuning
         'test_r2': test_r2
     }
 
-    # 保存为JSON
-    with open(METRICS_JSON, 'w', encoding='utf-8') as f:
-        json.dump([metrics], f, ensure_ascii=False, indent=4)
-    print(f"评估指标已保存至 {METRICS_JSON}")
-
-    return y_tr_pred, y_te_pred, y_fu_pred
+    return y_tr_pred, y_te_pred, y_fu_pred, metrics
 
 
 # ------------ 结果后处理(生成日度 & 月度 DataFrame) ------------
@@ -417,6 +412,7 @@ def merge_and_prepare_df(train, test, future, y_te_pred, y_fu_pred):
 def generate_and_fill_excel(
     daily_df,
     monthly_df,
+    metrics,           # 新增参数
     target_name,        # 写入的"预测标的"显示名
     classification,     # 列表页-分类
     model_framework,    # 列表页-模型框架
@@ -476,6 +472,23 @@ def generate_and_fill_excel(
         ws_daily.write(0, 0, target_name)
         ws_daily.write_row(1, 0, ['指标日期','实际值','预测值'])
 
+        # ========= 训练结果页 =========
+        ws_metrics = workbook.add_worksheet('训练结果页')
+        writer.sheets['训练结果页'] = ws_metrics
+        
+        metrics_headers = ['指标名称', '指标值']
+        ws_metrics.write_row(0, 0, metrics_headers)
+        
+        metrics_rows = [
+            ['训练集 MSE', metrics['train_mse']],
+            ['测试集 MSE', metrics['test_mse']],
+            ['训练集 R²', metrics['train_r2']],
+            ['测试集 R²', metrics['test_r2'] if metrics['test_r2'] is not None else '']
+        ]
+        
+        for i, row in enumerate(metrics_rows, start=1):
+            ws_metrics.write_row(i, 0, row)
+
     print(f"已生成并填充 {output_path}")
 
 
@@ -560,7 +573,7 @@ def main():
 
     model = train_model_with_tuning(X_tr_s, y_tr, X_te_s, y_te, weights, USE_HYPERPARAM_TUNING)
 
-    y_tr_pred, y_te_pred, y_fu_pred = evaluate_and_predict(model, scaler, X_tr, y_tr, X_te, y_te, X_fu, USE_HYPERPARAM_TUNING)
+    y_tr_pred, y_te_pred, y_fu_pred, metrics = evaluate_and_predict(model, scaler, X_tr, y_tr, X_te, y_te, X_fu, USE_HYPERPARAM_TUNING)
 
     daily_df, monthly_df = merge_and_prepare_df(train, test, future, y_te_pred, y_fu_pred)
 
@@ -570,13 +583,14 @@ def main():
     generate_and_fill_excel(
         daily_df,
         monthly_df,
-        target_name= TARGET_NAME,          
-        classification= CLASSIFICATION,
-        model_framework= MODEL_FRAMEWORK,
-        creator= CREATOR,
-        pred_date= PRED_DATE,           
-        frequency= FREQUENCY,
-        output_path= OUTPUT_PATH     
+        metrics,           # 新增参数
+        target_name=TARGET_NAME,          
+        classification=CLASSIFICATION,
+        model_framework=MODEL_FRAMEWORK,
+        creator=CREATOR,
+        pred_date=PRED_DATE,           
+        frequency=FREQUENCY,
+        output_path=OUTPUT_PATH     
     )
     
     full_model, y_fu_full, scaler_full = train_full_model_and_predict(X_tr, y_tr, X_te, y_te, X_fu)

+ 0 - 8
WTI/model_metrics.json

@@ -1,8 +0,0 @@
-[
-    {
-        "train_mse": 0.6056,
-        "test_mse": 1.442,
-        "train_r2": 0.9912,
-        "test_r2": -0.1592
-    }
-]

BIN
WTI/update.xlsx