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

📄 dualpls.m

📁 《模式分析的核方法》一书中的源代码
💻 M
字号:
function [alpha,testY,varargout] = dualpls(K,Ktest,Y,T,varargin)%function [alpha,testY,varargout] = dualpls(K,Y,Ytest,T,varargin)%% Performs dual (kernel) PLS discrimination%%INPUTS% K = the training kernel matrix% Ktest = the kernel matrix (dimension ell x elltest)% Y = the training label matrix (ell x m)% T = the number of PLS components to take% varargin = optional argument specifying the true test label matrix%            of size elltest x m, if %%OUTPUTs% alpha = the dual vectors corresponding to the PLS classfier% testY = the estimated label matrix for the test samples% varargout = the test error, optional when varargin is specified (the%             true test labels)%%%For more info, see www.kernel-methods.net%%Note: this code has not been tested extensively.% K is an ell x ell kernel matrix% Y is ell x m containing the corresponding output vectors% T gives the number of iterations to be performedell=size(K,1);trainY=0;KK = K; YY = Y;for i=1:T    YYK = YY*YY'*KK;    beta(:,i) = YY(:,1)/norm(YY(:,1));    if size(YY,2) > 1, % only loop if dimension greater than 1        bold = beta(:,i) + 1;        while norm(beta(:,i) - bold) > 0.001,            bold = beta(:,i);            tbeta = YYK*beta(:,i);            beta(:,i) = tbeta/norm(tbeta);        end    end    tau(:,i) = KK*beta(:,i);    val = tau(:,i)'*tau(:,i);    c(:,i) = YY'*tau(:,i)/val;    trainY = trainY + tau(:,i)*c(:,i)';    trainerror = norm(Y - trainY,'fro')/sqrt(ell);    w = KK*tau(:,i)/val;    KK = KK - tau(:,i)*w' - w*tau(:,i)' + tau(:,i)*tau(:,i)'*(tau(:,i)'*w)/val;    YY = YY - tau(:,i)*c(:,i)';end% Regression coefficients for new dataalpha = beta * ((tau'*K*beta)\tau')*Y;%  Ktest gives new data inner products as rows, Ytest true outputselltest = size(Ktest',1);testY = Ktest' * alpha;if ~isempty(varargin)    Ytest = varargin{1};    testerror = norm(Ytest - testY,'fro')/sqrt(elltest)    varargout = testerror;end

⌨️ 快捷键说明

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