makecrossvalmodel.m

来自「有监督自组织映射-偏最小二乘算法(A supervised self-organ」· M 代码 · 共 69 行

M
69
字号
function [BestXval,BestMLK,MLKP] = MakeCrossValModel(Nval,PercentageTrain,MLK,MLKP);

if (upper(MLKP.ProblemType) == 'CLS')
    OldPercCorrTest=0;
else
    OldPercCorrTest=realmax;
end

X=MLK.Xtr;
Y=MLK.Ytr;
for ival=1:Nval
    %
    % make a (balanced) division in training and test sets
    [Xtr,Ytr,Xtest,Ytest] = MakeBalancedSet(X,Y,PercentageTrain,MLKP); 
    %
    % scale if necessary the original or generated data sets
    [NewXtr,ScaleParX] = ScaleData(Xtr, MLKP.ScaleTypeX);
    Xtr=NewXtr;
    [NewXtest] = ReScaleData(Xtest,MLKP.ScaleTypeX,ScaleParX);
    Xtest=NewXtest;
    [NewYtr,ScaleParY] = ScaleData(Ytr, MLKP.ScaleTypeY);
    Ytr=NewYtr;
    [NewYtest] = ReScaleData(Ytest,MLKP.ScaleTypeY,ScaleParY);
    Ytest=NewYtest;
    %
    if (upper(MLKP.KernelTransformation) == 'Y')
        [Ktr,Ktest]=MakeKernel(Xtr,Xtest,MLKP);
        Xtr=Ktr;
        Xtest=Ktest;
        clear Ktr Ktest
    end
    %
    % start the modelling
    if (upper(MLKP.ProblemType) == 'CLS')
        % calculate confusion tables, overall performance and best model
        [MLK]= TrainClass(Xtr,Ytr,Xtest,Ytest,MLKP);
        PercCorrTrain(ival)=MLK.PercCorrTrain;
        PercCorrTest(ival)=MLK.PercCorrTest;
        if PercCorrTest(ival) > OldPercCorrTest
            OldPercCorrTrain = PercCorrTrain(ival);
            OldPercCorrTest = PercCorrTest(ival);
            BestXval=ival;
        end
    else
        % calculate RMSEC, RMSEP values, overall performance and best model
        [MLK]=TrainRegr(Xtr,Ytr,Xtest,Ytest,MLKP);
        PercCorrTrain(ival)=MLK.RmseTrainAll;
        PercCorrTest(ival)=MLK.RmseTestAll;
        if PercCorrTest(ival) < OldPercCorrTest
            OldPercCorrTrain = PercCorrTrain(ival);
            OldPercCorrTest = PercCorrTest(ival);
            BestXval=ival;
        end
    end
    BestMLK(ival)=MLK;
end

%
% return overall results of modelling procedure
MeanPCTrain=mean(PercCorrTrain);
StdPCTrain=std(PercCorrTrain);
Message=sprintf('Training:   Mean %g        Stddev %g', MeanPCTrain, StdPCTrain);
disp(Message);
MeanPCTest=mean(PercCorrTest);
StdPCTest=std(PercCorrTest);
Message=sprintf('Test:       Mean %g        Stddev %g', MeanPCTest, StdPCTest);
disp(Message);
Message=sprintf('Best model: Training %g,   Test %g', OldPercCorrTrain, OldPercCorrTest);
disp(Message);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?