回歸預測 | MATLAB實現基于SAE堆疊自編輯器多輸入單輸出回歸預測
目錄
- 回歸預測 | MATLAB實現基于SAE堆疊自編輯器多輸入單輸出回歸預測
- 預測效果
- 基本介紹
- 模型描述
- 程序設計
- 參考資料
預測效果
基本介紹
1.MATLAB實現基于SAE堆疊自編輯器多輸入單輸出回歸預測;
2.運行環境為Matlab2020b;
3.輸入多個特征,輸出單個變量,多變量回歸預測;
4.data為數據集,excel數據,前7列輸入,最后1列輸出,所有文件放在一個文件夾;
5.命令窗口輸出R2、MAE、MAPE、RMSE多指標評價;
模型描述
基于SAE(Stacked Autoencoder)的堆疊自編碼器是一種無監督學習算法,用于學習輸入數據的特征表示。它可以用于多輸入單輸出的回歸預測任務。下面是一個基于SAE堆疊自編碼器的多輸入單輸出回歸預測的一般步驟:準備輸入數據和對應的輸出標簽。輸入數據可以有多個特征,每個特征可以是數值型、分類型或者其他類型的數據。輸出標簽是回歸預測的目標值。對輸入數據進行標準化處理,使得不同特征具有相同的尺度。這可以提高模型的訓練效果。使用堆疊自編碼器的層次結構逐層進行訓練。每一層的自編碼器都是一個無監督學習模型,它通過最小化重構誤差來學習輸入數據的表示。每個自編碼器的隱藏層輸出可以作為下一層自編碼器的輸入。
訓練完整的堆疊自編碼器后,可以使用它來提取輸入數據的特征表示。將輸入數據通過每一層的自編碼器,得到每一層的隱藏層輸出作為新的特征表示。使用提取的特征表示和對應的輸出標簽進行回歸模型的訓練。可以選擇常見的回歸模型,如線性回歸、支持向量回歸(SVR)或者深度神經網絡等。使用評估指標(如均方誤差、平均絕對誤差等)對訓練好的回歸模型進行評估。可以使用交叉驗證等技術來評估模型的泛化性能。使用訓練好的回歸模型對新的輸入數據進行預測。將輸入數據通過特征提取步驟得到特征表示,然后使用回歸模型進行預測。SAE的堆疊自編碼器可以根據具體的任務和數據進行調整和優化。
程序設計
- 完整源碼和數據獲取方式:私信回復基于SAE堆疊自編輯器多輸入單輸出回歸預測。
%% 預測
t_sim1 = predict(net, p_train);
t_sim2 = predict(net, p_test ); %% 數據反歸一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);%% 均方根誤差
error1 = sqrt(sum((T_sim1' - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2' - T_test ).^2) ./ N);%% 相關指標計算
% R2
R1 = 1 - norm(T_train - T_sim1')^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test - T_sim2')^2 / norm(T_test - mean(T_test ))^2;disp(['訓練集數據的R2為:', num2str(R1)])
disp(['測試集數據的R2為:', num2str(R2)])% MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;disp(['訓練集數據的MAE為:', num2str(mae1)])
disp(['測試集數據的MAE為:', num2str(mae2)])%% 平均絕對百分比誤差MAPE
MAPE1 = mean(abs((T_train - T_sim1')./T_train));
MAPE2 = mean(abs((T_test - T_sim2')./T_test));disp(['訓練集數據的MAPE為:', num2str(MAPE1)])
disp(['測試集數據的MAPE為:', num2str(MAPE2)])% MBE
mbe1 = sum(abs(T_sim1' - T_train)) ./ M ;
mbe2 = sum(abs(T_sim1' - T_train)) ./ N ;disp(['訓練集數據的MBE為:', num2str(mbe1)])
disp(['測試集數據的MBE為:', num2str(mbe2)])%均方誤差 MSE
mse1 = sum((T_sim1' - T_train).^2)./M;
mse2 = sum((T_sim2' - T_test).^2)./N;disp(['訓練集數據的MSE為:', num2str(mse1)])
disp(['測試集數據的MSE為:', num2str(mse2)])
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501