linearr.m

来自「The pattern recognition matlab toolbox」· M 代码 · 共 58 行

M
58
字号
%LINEARR Linear regression%%     Y = LINEARR(X,LAMBDA,N)%% INPUT%   X       Dataset%   LAMBDA  Regularization parameter (default: no regularization)%   N       Order of polynomial (optional)%% OUTPUT%   Y       Linear (or higher order) regression%% DESCRIPTION% Perform a linear regression on dataset X, with regularization% parameter LAMBDA.  When N is supplied, also higher order polynomials% are possible.%% SEE ALSO%  RIDGER, TESTR, PLOTR, VANDERMONDE% Copyright: D.M.J. Tax, D.M.J.Tax@prtools.org% Faculty EWI, Delft University of Technology% P.O. Box 5031, 2600 GA Delft, The Netherlandsfunction y = linearr(x,lambda,p)if nargin<3	p = 1;endif nargin<2	lambda = [];endif nargin<1 | isempty(x)	y = mapping(mfilename,{lambda,p});	y = setname(y,'Linear regression');	returnendif ~ismapping(lambda) %training	[n,d] = size(x);	X = +vandermondem(x,p);	if isempty(lambda)		beta = inv(X'*X)*X'*gettargets(x);	else		dimp = size(X,2);		beta = inv(X'*X + lambda*eye(dimp))*X'*gettargets(x);	end	W.beta = beta;	W.n = p;	y = mapping(mfilename,'trained',W,1,d,1);	y = setname(y,'Linear regression');else	% evaluation	w = getdata(lambda);	out = vandermondem(x,w.n)*w.beta;	y = setdat(x,out);	end

⌨️ 快捷键说明

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