預測效果
代碼主要功能
該代碼實現了一個結合CNN(卷積神經網絡)、LSTM(長短期記憶網絡)和KAN(Kolmogorov-Arnold Network)的混合模型,用于時間序列預測任務。主要流程包括:
數據加載:加載預處理的訓練/測試集(特征和標簽)。
模型構建:
自定義KANLinear層(基于樣條函數的非線性激活)
構建CNNLSTMKANModel(CNN提取特征 → LSTM處理序列 → KAN層預測)
模型訓練:使用MSE損失和Adam優化器,記錄訓練/驗證損失。
模型評估:加載最佳模型預測測試集,計算R2、MSE、RMSE、MAE指標。
結果可視化:繪制損失曲線和預測效果對比圖。
算法步驟
數據準備
使用joblib加載標準化后的訓練/測試數據(train_set/test_set等)
封裝為PyTorch的DataLoader(批處理大小batch_size=64)
模型定義
KANLinear層:
CNN-LSTM-KAN模型:
CNN模塊:多層卷積(Conv1d)+ ReLU + 最大池化
LSTM模塊:多層LSTM處理時序特征
KAN輸出層:替換傳統全連接層做最終預測
用樣條基函數(B-splines)替代傳統激活函數
實現curve2coeff(樣條系數計算)、regularization_loss(正則化)
模型訓練
優化器:Adam(學習率0.0003)
損失函數:均方誤差(nn.MSELoss)
每epoch記錄訓練/驗證損失,保存最佳模型
評估與可視化
加載最佳模型預測測試集
反歸一化預測結果(使用StandardScaler)
計算評估指標(R2、MSE等)并繪制損失曲線
技術路線
數據流
原始數據 → 預處理(標準化)→ DataLoader → 模型輸入
模型結構
Input → CNN(特征提取)→ LSTM(時序建模)→ KAN(非線性預測)→ Output
關鍵創新
KAN層:通過樣條插值增強模型表達能力(優于傳統ReLU)
混合架構:CNN捕捉局部模式,LSTM學習長期依賴,KAN提供靈活映射
評估方法
使用R2(解釋方差)、MSE(均方誤差)、RMSE(均方根誤差)、MAE(平均絕對誤差)
反歸一化后對比預測值與真實值
完整代碼
- 完整代碼訂閱專欄獲取
運行環境
Python庫依賴
torch, joblib, numpy, pandas # 數據處理與模型構建
sklearn.metrics, matplotlib # 評估與可視化
硬件要求
自動檢測GPU(優先使用CUDA):
device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)
若無GPU則退化為CPU運行
數據預準備
訓練/測試集需預先保存為train_set、train_label等文件(通過joblib)
補充說明
KAN的優勢:
樣條函數提供更高階非線性擬合能力,適合復雜時間序列模式。
混合架構意義:
CNN提取空間特征 → LSTM捕獲時間依賴 → KAN增強預測靈活性。
關鍵文件:
最佳模型保存為best_model_cnn_lstm_kan.pt
標準化器保存為scaler(用于結果反歸一化)
此模型適用于單變量時間序列預測(如風速、股價等),通過混合架構平衡特征提取與序列建模能力,KAN層進一步提升非線性擬合性能。