clear all;
close all;
clc;
str='power';
CC=dir('C:\Users\WIMOC70639\Desktop\GBM\一?');
%DD=dir('C:\Users\WIMOC70639\Desktop\非侵入式');
%CC=dir('C:\元智大學AI論文\空汙\London-train\prepareddata_NO2\input*');
%DD=dir('C:\元智大學AI論文\空汙\London-train\prepareddata_NO2\result*');
T=50; %decision tree number
N=300; %疊帶次數
CCC=length(CC);
%CCC=1;
tai=1;
lod=6;
[A,txt1,raw1]=xlsread([CC(6,1).folder,'\',CC(6,1).name]);
%[B,txt,raw]=xlsread([DD(13,1).folder,'\',DD(13,1).name]);
%[B,txt,raw]=xlsread([DD(13,1).folder,'\',DD(13,1).name]);
% B(:,2:6)=[];
% new_B = zeros(length(B(:,1)),length(B(1,:)));
% for i = 1:length(B(:,1))
% c7 = max(B);
% c6=min(B);
% new_B(i,1) = ( B(i,1)-c6)/ (c7-c6);
% end
A(:,10:15)=[] ;
A(:,14:end)=[] ;
% A(:,37)=[] ;
% A(:,36)=[] ;
%
% A(:,33)=[] ;
% A(:,32)=[] ;
% A(:,31)=[] ;
% A(:,30)=[] ;
% A(:,27)=[] ;
% A(:,26)=[] ;
% A(:,25)=[] ;
% A(:,24)=[] ;
%
% A(:,21)=[] ;
% A(:,20)=[] ;
%A(:,15)=[] ;
%A(:,14)=[] ;
%A(:,11)=[] ;
%A(:,10)=[] ;
[ndata, D] = size(A); %ndata?本?,D??
Xtest = A(278:445,:);%以索引的前1000??据?作????本Xtest
Xtraining = A(1:277,:); %剩下的?据作????本Xtraining
Xtraining = [Xtraining;A(614:end,:)];
num_training = size(Xtraining,1);%num_training;???本?
Xtext=data_other221(137:304,:);
Ytext=result(137:304,:);
data_other221(137:304,:)=[];
Xtraining=data_other221;
result(137:304,:)=[];
Ytraining=result;
T=50; %decision tree number
N=300; %疊帶次數
%把讀入的矩陣轉成表格
Tb2=[];
Tb2 = array2table([new_train_data(:,1),new_train_data(:,2:end)]);
t = templateTree('MaxNumSplits',T,'Surrogate','on');
%開始訓練線性回歸模型
Mdl1 = fitensemble(Tb2,'Var1','LSBoost',N,t,'Type','regression','LearnRate',0.0875);
predictorImportance(Mdl1)
imp = predictorImportance(Mdl1);
figure;
bar(imp);
title('Curvature Test');
ylabel('Predictor importance estimates');
xlabel('Predictors');
Mdl = TreeBagger(100,Tb2,'Var1','Method','regression');
%訓練完成開始測試資料
KK=size(new_text_data);
Z=0;
for i = 1:KK(1,1)
pred(i,1)=i;
pred(i,2) = predict(Mdl1,new_text_data(i,2:end));
if pred(i,2)<0
pred(i,2)=0;
end
pred(i,3) = new_text_data(i,1);
end
pred2=mat2cell(pred,[24 24 24 24 24 24],[3]);
KK=size(new_text_data);
Z=0;
for i = 1:KK(1,1)
pred3(i,1)=i;
pred3(i,2) = predict(Mdl,new_text_data(i,2:end));
if pred3(i,2)<0
pred3(i,2)=0;
end
pred3(i,3) = new_text_data(i,1);
end
pred4=mat2cell(pred3,[24 24 24 24 24 24],[3]);
% H=[];
% I=[];
% for i=1:6
% H(i,:)=min(pred2{i,1})
% I(i,:)=max(pred2{i,1})
% for j=1:24
% pred3{i,1}(j,2)=1.1+(pred2{i,1}(j,2)-H(i,2))/(I(i,2)-H(i,2))*0.8;
% pred3{i,1}(j,3)=1.1+(pred2{i,1}(j,3)-H(i,3))/(I(i,3)-H(i,3))*0.8;
% end
%
% end
%計算R^2
figure('units','normalized','outerposition',[0 0 0.5625 1],'visible','on');
Z2=0;
for j=1:144
Z2=Z2+(abs(pred(j,2)-pred(j,3)))/pred(j,3)*100;
end
NRMSE = sqrt(sum((pred(:,2)-pred(:,3)).^2)/144)/mean(pred(:,3));
MAPE2=Z2/144;
y=mean(pred(:,3));
SSE=sum((pred(:,2)-pred(:,3)).^2);
SST=sum((pred(:,3)-y).^2);
R22=1-SSE/SST;
MSE=SSE/144
for i=1:6
Z=0;
for j=1:24
Z=Z+(abs(pred2{i,1}(j,2)-pred2{i,1}(j,3)))/pred2{i,1}(j,3)*100;
end
RMSE1(i,1) = sqrt(sum((pred2{i,1}(:,2)-pred2{i,1}(:,3)).^2)/24)/mean(pred2{i,1}(:,3));
y=mean(pred2{i,1}(:,3));
SSE=sum((pred2{i,1}(:,2)-pred2{i,1}(:,3)).^2);
SST=sum((pred2{i,1}(:,3)-y).^2);
R2(i,1)=1-SSE/SST;
MAPE1(i,1)=Z/24;
subplot(2,3,i); % subplot(x,y,n)x表示?示的行?,y表示列?,n表示第几幅?片
plot(pred2{i, 1}(:,2),'-o','linewidth',1.5,'Color','b','MarkerSize',4,'MarkerFaceColor','b')
hold on
plot(pred2{i, 1}(:,3),'-*','linewidth',1.5,'Color','r','MarkerSize',4,'MarkerFaceColor','r')
ylabel('Power','FontSize',20,'FontWeight','bold','Fontname', 'Times New Roman');
xlabel('Time(h)','FontSize',20,'FontWeight','bold','Fontname', 'Times New Roman');
legend('Predicted','Actual','Fontname', 'Times New Roman')%,'Location','NorthWest');
set(gca,'FontSize',20,'FontWeight','bold','LineWidth',1.5,'Fontname', 'Times New Roman');
set(gca, 'XLim',[0 25]);
%set(gca, 'YLim',[0 16]);
end
pred4=mat2cell(pred3,[24 24 24 24 24 24],[3]);
for i=1:6
Z=0;
for j=1:24
Z=Z+(abs(pred4{i,1}(j,2)-pred4{i,1}(j,3)))/pred4{i,1}(j,3)*100;
end
RMSE1(i,1) = sqrt(sum((pred4{i,1}(:,2)-pred4{i,1}(:,3)).^2)/24)/mean(pred4{i,1}(:,3));
y=mean(pred4{i,1}(:,3));
SSE=sum((pred4{i,1}(:,2)-pred4{i,1}(:,3)).^2);
SST=sum((pred4{i,1}(:,3)-y).^2);
R2(i,1)=1-SSE/SST;
MAPE1(i,1)=Z/24;
subplot(2,3,i); % subplot(x,y,n)x表示?示的行?,y表示列?,n表示第几幅?片
plot(pred4{i, 1}(:,2),'-o','linewidth',1.5,'Color','b','MarkerSize',4,'MarkerFaceColor','b')
hold on
plot(pred4{i, 1}(:,3),'-*','linewidth',1.5,'Color','r','MarkerSize',4,'MarkerFaceColor','r')
ylabel('Power','FontSize',20,'FontWeight','bold','Fontname', 'Times New Roman');
xlabel('Time(h)','FontSize',20,'FontWeight','bold','Fontname', 'Times New Roman');
legend('Predicted','Actual','Fontname', 'Times New Roman')%,'Location','NorthWest');
set(gca,'FontSize',20,'FontWeight','bold','LineWidth',1.5,'Fontname', 'Times New Roman');
set(gca, 'XLim',[0 25]);
%set(gca, 'YLim',[0 16]);
end
pred6=mat2cell(pred5,[24 24 24 24 24 24],[3]);
for i=1:6
Z=0;
for j=1:24
Z=Z+(abs(pred6{i,1}(j,2)-pred6{i,1}(j,3)))/pred6{i,1}(j,3)*100;
end
RMSE1(i,1) = sqrt(sum((pred6{i,1}(:,2)-pred6{i,1}(:,3)).^2)/24)/mean(pred6{i,1}(:,3));
y=mean(pred6{i,1}(:,3));
SSE=sum((pred6{i,1}(:,2)-pred6{i,1}(:,3)).^2);
SST=sum((pred6{i,1}(:,3)-y).^2);
R2(i,1)=1-SSE/SST;
MAPE1(i,1)=Z/24;
subplot(2,3,i); % subplot(x,y,n)x表示?示的行?,y表示列?,n表示第几幅?片
plot(pred6{i, 1}(:,2),'-o','linewidth',1.5,'Color','b','MarkerSize',4,'MarkerFaceColor','b')
hold on
plot(pred6{i, 1}(:,3),'-*','linewidth',1.5,'Color','r','MarkerSize',4,'MarkerFaceColor','r')
ylabel('Power','FontSize',20,'FontWeight','bold','Fontname', 'Times New Roman');
xlabel('Time(h)','FontSize',20,'FontWeight','bold','Fontname', 'Times New Roman');
legend('Predicted','Actual','Fontname', 'Times New Roman')%,'Location','NorthWest');
set(gca,'FontSize',20,'FontWeight','bold','LineWidth',1.5,'Fontname', 'Times New Roman');
set(gca, 'XLim',[0 25]);
%set(gca, 'YLim',[0 16]);
end
Z2=0;
for j=1:144
Z2=Z2+(abs(pred3(j,2)-pred3(j,3)))/pred3(j,3)*100;
end
NRMSE = sqrt(sum((pred3(:,2)-pred3(:,3)).^2)/144)/mean(pred3(:,3));
MAPE2=Z2/144;
y=mean(pred3(:,3));
SSE=sum((pred3(:,2)-pred3(:,3)).^2);
SST=sum((pred3(:,3)-y).^2);
R22=1-SSE/SST;
MSE=SSE/144
A(:,1)=pred(:,2);
A(:,2)=pred3(:,2);
A(:,3)=pred5(:,2);
A(:,4)=pred(:,3);
A2=mat2cell(A,[24 24 24 24 24 24],[4]);
figure('units','normalized','outerposition',[0 0 0.5625 1],'visible','on');
for i=1:6
subplot(2,3,i); % subplot(x,y,n)x表示?示的行?,y表示列?,n表示第几幅?片
plot(A2{i, 1}(:,1),'-o','linewidth',1.5,'Color','b','MarkerSize',2,'MarkerFaceColor','b')
hold on
plot(A2{i, 1}(:,2),'-*','linewidth',1.5,'Color','r','MarkerSize',2,'MarkerFaceColor','r')
hold on
plot(A2{i, 1}(:,3),'-d','linewidth',1.5,'Color','g','MarkerSize',2,'MarkerFaceColor','g')
hold on
plot(A2{i, 1}(:,4),'-s','linewidth',1.5,'Color','k','MarkerSize',2,'MarkerFaceColor','k')
% hold on
% plot(A2{i, 1}(:,5),'-p','linewidth',1.5,'Color','k','MarkerSize',2,'MarkerFaceColor','k')
%
ylabel('Energy Consumption(kWh)','FontSize',13,'FontWeight','bold','Fontname', 'Times New Roman');
xlabel('Time(h)','FontSize',13,'FontSize',10,'Fontname', 'Times New Roman');
legend('GBDT','CART','LR','Actual','Fontname', 'Times New Roman')%,'Location','NorthWest');
set(gca,'FontSize',13,'FontWeight','bold','LineWidth',1.5,'Fontname', 'Times New Roman');
set(gca, 'XLim',[0 25]);
end
% figure('units','normalized','outerposition'
评论0