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

📄 learnlvq.m

📁 有监督自组织映射-偏最小二乘算法(A supervised self-organising map–partial least squares algorithm),可以用语多变量数据的回归分析
💻 M
字号:
function [NewXMap,WeightEvolution] = LearnLVQ(Xtr,Ytr,XMap,YMap,MLKP);

if(MLKP.MaxIter<1)
    NewXMap=XMap;
    NewYMap=YMap;
    WeightEvolution=0;
    return
end

OldRadiusX=floor(realmax);
OldRadiusY=floor(realmax);
[Nobjects,NvarX] = size(Xtr);
WeightValues = DetermineWeights(Ytr,MLKP);

for iter=1:MLKP.MaxIter
    % create neighbourhood and weights
    [AlphaX,AlphaY,RadiusX,RadiusY,DecayFract] = AdaptLearnParams(iter,MLKP);
    if (RadiusX < OldRadiusX)
        [ActUnitsX, WeightsX] = MakeWinnerTable(RadiusX,MLKP);
        OldRadiusX=RadiusX;
    end
    if (RadiusY < OldRadiusY)
        [ActUnitsY, WeightsY] = MakeWinnerTable(RadiusY,MLKP);
        OldRadiusY=RadiusY;
    end
    if (upper(MLKP.WeightDecay) == 'Y' | upper(MLKP.AddNoise) == 'Y')
        [XMap] = WeightDecayAddNoise(XMap, DecayFract, MLKP);
        [YMap] = WeightDecayAddNoise(YMap, DecayFract, MLKP);
    end   
    if (upper(MLKP.FastUpdate) == 'Y' & RadiusX == MLKP.FastUpdateSize...
                                      & RadiusY == MLKP.FastUpdateSize)
        [NewXMap,NewYMap] = FastUpdateMapXY(Xtr,XMap,Ytr,YMap,MLKP,iter);
        return;
    end
    % learn an epoch
    OldXMap=XMap;
    perm=randperm(Nobjects);
    for iobj=1:Nobjects
        X=Xtr(perm(iobj),:);
        Y=Ytr(perm(iobj),:);
        AttFact=WeightValues(perm(iobj)); 
        [Value, Winner] = DetermineWinner(X,XMap,MLKP.DistTypeX,MLKP);
        AF = AttFact*Value*CorrectClass(Y,YMap(:,Winner));
        [NewXMap] = AdaptMap(X,XMap,Winner,AlphaX*AF,ActUnitsX,WeightsX); 
        XMap=NewXMap;
    end
    WeightEvolution(1,iter) = sum(sum(abs(XMap-OldXMap)))/AlphaX;
    if (iter > 1 & CheckConvergence(OldXMap, XMap, MLKP) == 'Y')
        return;
    end
end

⌨️ 快捷键说明

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