⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 somplsvalmodel.m

📁 有监督自组织映射-偏最小二乘算法(A supervised self-organising map–partial least squares algorithm),可以用语多变量数据的回归分析
💻 M
字号:
function [PCTrain,PCTest,NBestMLK,NMLKP] = SOMPLSValModel(BestMLK,MLKP,OPT)

global p1 p2
MLKP.TrainingMethod='PLS';
MLKP.DataFile='Temp/tempfile';
MLKP.DataSet='Orig';
MLKP.ScaleTypeX = 'Raw';   
MLKP.ScaleTypeY = 'Raw';
MLKP.ScaleBack = 'N';
MLKP.SilentMode='Y';
MLKP.LatentVar=OPT.LV;

if (upper(MLKP.ProcMode) == 'XMAP')
    XMap=BestMLK.XMap;
elseif (upper(MLKP.ProcMode) == 'KPLS')
    XMap=BestMLK.Xtr';
end
ScaleFact=max(max(dist(BestMLK.Xtr,BestMLK.Xtr')));
XMap=XMap/ScaleFact;
Xtr=BestMLK.Xtr/ScaleFact;
Xtest=BestMLK.Xtest/ScaleFact;
Ytr=BestMLK.Ytr;
Ytest=BestMLK.Ytest;

if (upper(OPT.DistTypeX) == 'COR')
    Xtr=(OPT.B0+Xtr*XMap).^OPT.Power;
    Xtest=(OPT.B0+Xtest*XMap).^OPT.Power;
elseif (upper(OPT.DistTypeX) == 'EUC')
    Xtr=(OPT.B0+dist(Xtr,XMap)).^OPT.Power;
    Xtest=(OPT.B0+dist(Xtest,XMap)).^OPT.Power;
elseif (upper(OPT.DistTypeX) == 'RBF')
    Xtr=exp(-(dist(Xtr,XMap).^2)/(2*OPT.Sigma^2));
    Xtest=exp(-(dist(Xtest,XMap).^2)/(2*OPT.Sigma^2));
elseif (upper(OPT.DistTypeX) == 'PUK')
    p1=OPT.Sigma;
    p2=OPT.Omega;
    [NobjTrain,NvarX]=size(Xtr);
    [NobjTest,NvarX]=size(Xtest);
    [NvarX,Nunit]=size(XMap);
    for jobj=1:Nunit
        for iobj=1:NobjTrain
            Ktr(iobj,jobj)=svkernel('puk',Xtr(iobj,:),XMap(:,jobj)');
        end
        for iobj=1:NobjTest
            Ktest(iobj,jobj)=svkernel('puk',Xtest(iobj,:),XMap(:,jobj)');
        end
    end
    Xtr=Ktr;
    Xtest=Ktest;
end

save Temp/tempfile Xtr Xtest Ytr Ytest    
[PCTrain,PCTest,NBestMLK,NMLKP] = MakeModel(1,0,MLKP);
PercCorrTrain=PCTrain;
PercCorrTest=PCTest;

Message=sprintf('\nValidation result with %s with %d LVs',...
                MLKP.TrainingMethod,OPT.LV);
disp(Message);
if (upper(OPT.DistTypeX) == 'PUK')
    Message=sprintf('Optimised parameters - Similarity: %s,  Sigma %g, Omega %g',...
                    OPT.DistTypeX, OPT.Sigma, OPT.Omega);
elseif (upper(OPT.DistTypeX) == 'RBF')
    Message=sprintf('Optimised parameters - Similarity: %s,  Sigma %g',...
                    OPT.DistTypeX, OPT.Sigma);
else
    Message=sprintf('Optimised parameters - Similarity: %s,  Power: %d,  B0: %d',...
                    OPT.DistTypeX, OPT.Power, OPT.B0);
end
disp(Message);
if (upper(MLKP.ProblemType) == 'CLS')
    Message=sprintf('Training: Percentage correct %g', PercCorrTrain);
    disp(Message);
    Message=sprintf('Test:     Percentage correct %g\n', PercCorrTest);
    disp(Message);
else
    [Nobjects,NvarY]=size(Ytr);
    for ivar=1:NvarY
        Message=sprintf('Training: RMSE %g   Corr %g',...
                        NBestMLK.RmseTrain(ivar),NBestMLK.CorrTrain(ivar));
        disp(Message);
        Message=sprintf('Test:     RMSE %g   Corr %g\n',...
                        NBestMLK.RmseTest(ivar),NBestMLK.CorrTest(ivar));
        disp(Message);
   end
end

⌨️ 快捷键说明

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