2016-10-10 2 views
0

저는 fitrsvm을 기본값, 교차 유효성 검사 및 KFold 유효성 검사와 함께 사용하고 있습니다.MATLAB에서 MAPE 및 DS를 계산하는 방법

%%In sample validation. 
rng default ; 
mdl = fitrsvm(X,Y, 'Standardize',true); 
loss = resubLoss(mdl) 
%% out of sample validation with 80% traning and 20% validation  
CVmdl = crossval(mdl,'Holdout',0.2); 
CVloss = kfoldLoss(CVmdl) 
%% 10Fold Cross Validation Model 
KFmdl = crossval(mdl); 
KFloss = kfoldLoss(KFmdl) 

나는 이러한 모델에 대한 MAPE와 방향 대칭 (DS)를 계산해야합니다. Matlab에 내장 함수 (예 : 손실 또는 KfoldLoss)가 있습니까? 아니면 이것을 함수로 구현해야합니까? 여기

+0

내가 미래를 피할 수 있도록 아래쪽 이유를 알려주시겠습니까? – Abrar

답변

0

나는이 비록

function mape(Y, Ypredict, indxtest) 
smape = 0; 

    if isempty(indxtest) 
     for i = 1 :length(Y) 
      smape = smape + (abs((Ypredict(i) - Y(i)))/Y(i)); 
     end 
    else 
     j = find(indxtest); 
     for i = 1 :length(j) 
      smape = smape + (abs((Ypredict(i) - Y(j(i))))/Y((j(i)))); 
     end 
    end 

mape = smape * 100/length(Y) 
end 
------------------------------------------------------- 
function ds(Y, Ypredict, indxtest) 
sds = 0; 
if isempty(indxtest) 
    for i = 2 :length(Y) 
     if (((Y(i)-Y(i-1))*(Ypredict(i)-Ypredict(i-1))) > 0) 
     sds = sds + 1; 
     end 
    end 
else 
    j = find(indxtest); 
    for i = 2 :length(j) 
     if (((Y(j(i))-Y(j(i-1)))*(Ypredict((i))-Ypredict(i-1))) > 0) 
      sds = sds + 1; 
     end 
    end 
end 
ds = sds * 100/length(j) 
end 

나를 위해 잘 작동하지만 누군가가 나를 중 하나를 개선하기 위해 도움이된다면 나는 감사합니다 함수와 방향 대칭 (DS)와 평균 절대 백분율 오류 (MAPE)를 모두 구현 라인 수를 최소화하거나 효율을 높입니다.

관련 문제