亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rbf_fs_2.m

?? matlab/e,radial basis function
?? M
字號:
function [C, R, w, info, conf] = rbf_fs_2(X, y, conf)%% Regularised forward selection using radial basis functions.%% Solves a regression problem with inputs X and outputs y using forward% selection of radial basis functions and (optionally) regularisation.% Returns the hidden unit centres C, their radii R, the hidden-to-output% weights w, some additional information info and a fully instantiated% configuration structure conf.%% For further details of the function see:%%  'Matlab Routines for RBF Networks', 1999.%% For descriptions of the algorithm see:%%  'Introduction to RBF Networks', 1996.%  'Further Advances in RBF Networks', 1999.%% Program name (for error messages).prog = 'rbf_fs_2';% Configuration specification.spec(1) = struct( ...  'comment', 'Centres', ...  'name', 'cen', ...  'type', 'matrix', ...  'options', [], ...  'default', []);spec(2) = struct( ...  'comment', 'Radii', ...  'name', 'rad', ...  'type', 'matrix', ...  'options', [], ...  'default', []);spec(3) = struct( ...  'comment', 'Bias unit', ...  'name', 'bias', ...  'type', 'number', ...  'options', {{0 1}}, ...  'default', 0);spec(4) = struct( ...  'comment', 'Model selection criterion', ...  'name', 'msc', ...  'type', 'string', ...  'options', {{'uev', 'fpe', 'gcv', 'bic'}}, ...  'default', 'gcv');spec(5) = struct( ...  'comment', 'Function to minimise', ...  'name', 'fmin', ...  'type', 'string', ...  'options', {{'cost', 'sse'}}, ...  'default', 'sse');spec(6) = struct( ...  'comment', 'Termination threshold', ...  'name', 'thresh', ...  'type', {{'number', 'positive', 'integer'}}, ...  'options', [], ...  'default', 10000);spec(7) = struct( ...  'comment', 'Basis function type', ...  'name', 'type', ...  'type', 'string', ...  'options', [], ...  'default', 'g');spec(8) = struct( ...  'comment', 'Basis function sharpness', ...  'name', 'exp', ...  'type', 'number', ...  'options', [], ...  'default', 2);spec(9) = struct( ...  'comment', 'Initial regularisation parameter', ...  'name', 'lam', ...  'type', {{'number', 'nonnegative'}}, ...  'options', [], ...  'default', 1e-9);spec(10) = struct( ...  'comment', 'Reestimate regularisation parameter', ...  'name', 'reest', ...  'type', 'number', ...  'options', {{0 1}}, ...  'default', 0);spec(11) = struct( ...  'comment', 'Number of iterations to confirm minimum MSC reached', ...  'name', 'wait', ...  'type', {{'number', 'positive', 'integer'}}, ...  'options', [], ...  'default', 2);spec(12) = struct( ...  'comment', 'Verbose output', ...  'name', 'verb', ...  'type', 'number', ...  'options', {{0 1}}, ...  'default', 0);spec(13) = struct( ...  'comment', 'Basis function scales', ...  'name', 'scales', ...  'type', {{'vector', 'positive'}}, ...  'options', [], ...  'default', 1);spec(14) = struct( ...  'comment', 'Display graphical timer', ...  'name', 'timer', ...  'type', 'string', ...  'options', [], ...  'default', '');% Check number of arguments. Take special action if only one.switch nargincase 1  if isstring(X)    switch X    case 'conf'      conf_print(prog, spec)      return    case 'demo'      [mydemo, myclean] = eval(['demo_' prog]);      run_demo(mydemo, myclean)      return    otherwise      error([prog ': ''' X ''' unrecognised for single string argument'])    end  else    error([prog ': unrecognised type for single argument'])  endcase 2  if isstring(X) & isstring(y)    switch X    case 'conf'      conf_print(prog, spec, y)      return    otherwise      error([prog ': ''' X ''' unrecognised for double string argument'])    end  else    conf = [];  endcase 3otherwise  error([prog ': illegal number of arguments'])end% Check type of input arguments.if ~isnumeric(X) | ndims(X) ~= 2  error([prog ': first argument (X) should be a matrix'])endif ~isnumeric(y) | ndims(y) ~= 2 | size(y,2) ~= 1  error([prog ': second argument (y) should be a column vector'])end% Check for consistent size between X and y.[d,p] = size(X);if size(y,1) ~= p  error([prog ': number of samples inconsistent between X and y'])end% Check the configuration is okay and set initial defaults (if required).conf = conf_check(conf, spec, prog);% Check or set defaults for centres.if isempty(conf.cen)  % The inputs are the centres, if the user doesn't say otherwise.  conf.cen = X;else  % The centre dimension must be equal to the input dimension.  if size(conf.cen,1) ~= d    error([prog ': inconsistent dimensions between X and conf.cen'])  endendFC = conf.cen;M = size(FC,2);% Check or set defaults for radii.if isempty(conf.rad)  % Default: scaled in each dimension, same for each centre.  conf.rad = (max(X,[],2) - min(X,[],2));  conf.rad = conf.rad(:,ones(M,1));else  % Expand conf.rad using the same rules as for rbf_dm.  if max(size(conf.rad)) == 1    % It's a scalar - same size for each centre and in each dimension.    conf.rad = conf.rad(ones(d,1),ones(M,1));  elseif size(conf.rad,1) == 1 & size(conf.rad,2) == M    % A row vector - same size in each dimension.    conf.rad = conf.rad(ones(d,1),:);  elseif size(conf.rad,1) == d & size(conf.rad,2) == 1    % A column vector - same size for each centre.    conf.rad = conf.rad(:,ones(M,1));  elseif size(conf.rad,1) ~= d    error([prog ': conf.rad has wrong input dimension'])  elseif size(conf.rad,2) ~= M    error([prog ': conf.cen and conf.rad are inconsistent'])  endendFR = conf.rad;% Initialisation for flops and time.stats.comps = flops;stats.ticks = clock;% Set up a timer (if requested).if ~strcmp(conf.timer,'')  tmr = get_tmr(struct('name', [prog ' scales ' conf.timer], 'n', length(conf.scales)));end% Loop over scales.best.err = Inf;for s = 1:length(conf.scales)    % What scale are we using.  scale = conf.scales(s);    % Select with this scale.  [CC, RR, ww, iinfo] = forwardSelect(X, y, FC, FR, scale, conf);    % Is this the best so far?  if iinfo.err < best.err    C = CC;    R = RR;    w = ww;    info = iinfo;    best.err = info.err;    best.scale = scale;  end    % Increment the timer.  if ~strcmp(conf.timer,'')    inc_tmr(tmr)  end  end% Close the timer.if ~strcmp(conf.timer,'')  close(tmr)end% Record the computations and time taken.stats.comps = flops - stats.comps;stats.ticks = etime(clock,stats.ticks);info.stats = stats;% Best scale.info.scale = best.scale;% Configuration for rbf_dm.info.dmc = struct('type', conf.type, 'exp', conf.exp, 'bias', info.bias);% Feedback.if conf.verb  fprintf('\n-----------------------\n')  fprintf('best scale is %.3f\n', info.scale)  fprintf('%d centres selected\n', length(info.subset))  if conf.bias    if info.bias      fprintf('one bias unit (%d)\n', info.bias)    else      fprintf('no bias unit\n')    end  end  if conf.reest    fprintf('final lambda = %9.2e\n', info.lam)  end  fprintf('%s = %9.2e\n', conf.msc, info.err)  fprintf('-----------------------\n')endfunction [C, R, w, info] = forwardSelect(X, y, C, R, scale, conf)% Initialise.[d,p] = size(X);M = size(C,2);R = R * scale;% Get full design matrix. Errors in specifying conf.type and conf.exp caught by rbf_dm.conf_dm.type = conf.type;conf_dm.exp = conf.exp;F = rbf_dm(X, C, R, conf_dm);% Add a bias unit in the last column, if conf.bias is on.if conf.bias  F = [F ones(p,1)];  M = M + 1;end% Feedback header.if conf.verb  fprintf('\n')  fprintf('scale = %.3f\n', scale)  fprintf(' m   j   sse     %s   ', conf.msc)  if conf.reest    fprintf('    lam   \n')  else    fprintf('\n')  end  fprintf('-----------------------')  if conf.reest    fprintf('----------\n')  else    fprintf('\n')  endend% Initialise.m = 0;finished = 0;yy = y' * y;sse = yy;subset = [];lam = conf.lam;lams = [];gams = [];mscs = [];% Search for the most significant regressors.while ~finished  % Increment the number of regressors.  m = m + 1;    % Different action depending on whether this is the first regressor.  if m == 1        % The change in cost or sum squared error due to the first regressor.    FF = sum(F.*F,1)';    switch conf.fmin    case 'cost'      err = (F'*y).^2 ./ (lam + FF);    case 'sse'      err = ((F'*y).^2 .* (2 * lam + FF)) ./ (lam + FF).^2;    end    % Select the maximum.    [merr,j] = max(err);    subset = [subset j];    % Initialise Hm, the current orthogonalised design matrix,    % and Hn, the same but with normalised columns.    f = F(:,j);    ff = f' * f;    fy = f' * y;    Hm = f;    Hn = f / ff;    Hy = fy;    hh = ff;    % Initialise Fm ready for second iteration.    Fm = F - Hn * (Hm' * F);    FmFm = sum(Fm.*Fm,1)';    % initialise upper triangular matrix U    U = 1;  else    % Prepare to find most significant remaining regressor.    switch conf.fmin    case 'cost'      numerator = (Fm' * y).^2;      denominator = lam + FmFm;    case 'sse'      numerator = (Fm' * y).^2 .* (2 * lam + FmFm);      denominator = (lam + FmFm).^2;    end        % Avoid division by zero.    denominator(subset) = ones(m-1,1);    err = numerator ./ denominator;        % Avoid selecting the same regressor twice.    err(subset) = zeros(m-1,1);    % Select the maximum change.    [merr,j] = max(err);    subset = [subset j];    % Collect next columns for Hm and Hn.    f = Fm(:,j);    ff = f' * f;    fy = f' * y;    Hm(:,m) = f;    Hn(:,m) = f / ff;    Hy = [Hy; fy];    hh = [hh; ff];    % Recompute Fm ready for the next iteration.    Fm = Fm - Hn(:,m) * (Hm(:,m)' * Fm);    FmFm = sum(Fm.*Fm,1)';    % Update U.    U = [U Hn(:,1:m-1)' * F(:,j); zeros(1,m-1) 1];  end    % Update the sum of squared errors (and optionally reestimate lambda).  if conf.reest    sse = yy - sum((Hy.^2) .* (2*lam + hh) ./ ((lam + hh).^2));    lam = reest(sse, p, hh, lam, Hy, conf.msc);    lams = [lams lam];    sse = yy - sum((Hy.^2) .* (2*lam + hh) ./ ((lam + hh).^2));  else    if lam == 0      sse = sse - fy^2 / ff;    else      sse = sse - fy^2 * (2*lam + ff) / (lam + ff)^2;    end  end  % Calculate current MSC.  [msc, gam] = get_msc(sse, p, hh, lam, conf.msc);  mscs = [mscs msc];  gams = [gams gam];  % Feedback.  if conf.verb    % fprintf('%3d %3d %5.3f %9.2e', m, j, (1 - sse/yy), msc)    fprintf('%3d %3d %5.3f %9.2e', m, j, sse/yy, msc)    if conf.reest      fprintf(' %9.2e', lam)    end    fprintf('\n')  end  % Are we ready to terminate yet.  if m == M    % Run out of candidates.    finished = 1;    if msc < min_msc      age = 0;    else      age = age + 1;    end  elseif sse == 0    % Reduced error to zero.    finished = 1;    age = 0;  elseif sse < 0    % Reduced error beyond zero (numerical error).    finished = 1;    age = 1;  elseif max(FmFm) < eps    % No more significant regressors left.    finished = 1;    age = 0;  else    if m == 1      % First value, must be minimum so far.      min_msc = msc;      age = 0;    else      if msc < min_msc        % Is it sufficiently smaller than the old minimum to really count?        if msc < min_msc * (conf.thresh - 1) / conf.thresh          % Yes it's small enough - count as new minimum.          min_msc = msc;          age = 0;        else          % No it's not small enough - count as ageing minimum.          age = age + 1;        end      else        % Age old minimum.        age = age + 1;      end    end    if age >= conf.wait      finished = 1;    end  end    end% Don't include last few regressors which aged the minimum.m = m - age;subset = subset(1:m);  % Also truncate recursive OLS productions.U = U(1:m, 1:m);hh = hh(1:m);Hy = Hy(1:m);% Get lambda at time of minimum (if reestimating).if conf.reest  lams = lams(1:m);  lam = lams(m);end% Also, get msc and gamma at time of minimum.msc = mscs(m);gam = gams(m);% Design matrix.H = F(:,subset);% Did we choose the bias unit?if conf.bias  bias = find(subset == M);  if isempty(bias)    bias = 0;  else    subset = subset([1:(bias-1) (bias+1):end]);  endelse  bias = 0;end% Centres and radii.C = C(:,subset);R = R(:,subset);  % Variance matrix.Ui = inv(U);A = Ui * diag(1 ./ (lam + hh)) * Ui';  % Weight vector.w = Ui * (Hy ./ (lam + hh));% Other potentially useful results go in 'info'.info.F = F;info.H = H;info.A = A;info.U = U;info.lam = lam;info.gam = gam;info.err = msc;info.bias = bias;info.subset = subset;% Get the current model selection criterion.function [msc, gam] = get_msc(sse, p, hh, lam, type)% Effective number of free parameters.if lam == 0  gam = length(hh);else  gam = sum(hh ./ (lam + hh));end% Value of model selection criterion.switch typecase 'uev'  msc = sse / (p - gam);case 'fpe'  msc = (p + gam) * sse / (p * (p - gam));case 'gcv'  msc = p * sse / (p - gam)^2;case 'bic'  msc = (p + (log(p) - 1) * gam) * sse / (p * (p - gam));end% Reestimate the regularisation parameter.function lam = reest(sse, p, hh, lam, Hy, type)% Some things we'll need.lhh = lam + hh;tra = sum(1 ./ lhh) - lam * sum(1 ./ (lhh.^2));waw = sum((Hy.^2) ./ (lhh.^3));% Effective number of free parameters.gam = sum(hh ./ (lam + hh));% A scaling factor which depend on the type of MSC.switch typecase 'uev'  sca = 1 / (2 * (p - gam));case 'fpe'  sca = p / ((p - gam) * (p + gam));case 'gcv'  sca = 1 / (p - gam);case 'bic'  sca = p * log(p) / (2 * (p - gam) * (p + (log(p) - 1) * gam));end% We're ready for the re-estimation now.lam = sca * sse * tra / waw;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站最新地址| 99re热视频这里只精品| 91精品国产乱码| 奇米影视一区二区三区| 日韩亚洲国产中文字幕欧美| 久久激情五月激情| 久久伊人蜜桃av一区二区| 成人毛片老司机大片| 中文字幕亚洲不卡| 欧美视频一区二区在线观看| 性做久久久久久久久| 日韩欧美国产一区二区三区 | 亚洲美女视频在线| 欧美视频中文一区二区三区在线观看| 日韩精品一卡二卡三卡四卡无卡| 欧美大度的电影原声| 成人免费视频一区| 亚洲综合色视频| 久久亚洲二区三区| 91免费版在线| 精品一区二区三区久久| 中文字幕一区二区三区av | 51久久夜色精品国产麻豆| 黄页视频在线91| 亚洲资源在线观看| 久久新电视剧免费观看| 日本韩国一区二区| 经典三级在线一区| 一区二区三区加勒比av| 精品久久国产老人久久综合| 成人av高清在线| 奇米888四色在线精品| 国产精品初高中害羞小美女文| 欧美日韩在线不卡| 国产乱人伦偷精品视频免下载| 亚洲精品大片www| 欧美精品一区二区三区视频| 91麻豆国产香蕉久久精品| 美女网站一区二区| 一区二区三区电影在线播| www国产亚洲精品久久麻豆| 欧美视频一区二| 9色porny自拍视频一区二区| 久久99精品久久久久| 洋洋av久久久久久久一区| 日本一区二区免费在线| 日韩欧美在线不卡| 91久久一区二区| 成人av综合一区| 久草这里只有精品视频| 午夜电影网一区| 亚洲精品久久久久久国产精华液| 欧美大片一区二区| 欧美浪妇xxxx高跟鞋交| 91色porny在线视频| 国产成人精品综合在线观看| 秋霞影院一区二区| 五月天亚洲婷婷| 国产精品久久久久久久久果冻传媒 | 另类中文字幕网| 欧美国产亚洲另类动漫| xnxx国产精品| 欧美mv日韩mv国产网站| 欧美一个色资源| 欧美精品777| 欧美理论在线播放| 欧美老肥妇做.爰bbww视频| 91福利在线看| 在线欧美日韩精品| 色一情一伦一子一伦一区| 成人性生交大合| 国产成人av网站| 成人av午夜电影| 99久久综合国产精品| www.欧美.com| 一本色道久久综合狠狠躁的推荐| 成人av网站在线观看免费| 成人av高清在线| 色综合久久久久综合体桃花网| av在线不卡免费看| 99精品视频一区| 在线观看亚洲一区| 欧美日韩色综合| 91精品国产色综合久久不卡蜜臀| 6080午夜不卡| 精品av久久707| 国产喷白浆一区二区三区| 国产亚洲欧美在线| 国产精品国产馆在线真实露脸 | 99国产精品国产精品久久| 91一区二区在线观看| 91豆麻精品91久久久久久| 色悠悠久久综合| 欧美人xxxx| 久久久久久久久久美女| 国产精品乱人伦一区二区| 亚洲日本欧美天堂| 舔着乳尖日韩一区| 精品一区二区久久久| 成人午夜电影网站| 在线视频综合导航| 日韩一区二区三区在线| 欧美激情综合网| 亚洲一区中文日韩| 毛片av一区二区| 国产成人免费av在线| 欧美性色黄大片| 久久伊人中文字幕| 洋洋成人永久网站入口| 精品亚洲国内自在自线福利| 成人av中文字幕| 在线不卡免费av| 国产精品久久久久三级| 五月激情六月综合| 国产成+人+日韩+欧美+亚洲| 欧美视频三区在线播放| 久久理论电影网| 亚洲国产精品久久不卡毛片| 寂寞少妇一区二区三区| 91福利小视频| 久久久99免费| 天堂蜜桃一区二区三区| 国产suv一区二区三区88区| 欧美三级在线视频| 国产精品乱人伦中文| 免费观看在线色综合| 色婷婷国产精品| 久久久久久影视| 欧美aⅴ一区二区三区视频| 色综合天天视频在线观看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产一区欧美一区| 欧美性大战久久久久久久| 国产欧美va欧美不卡在线| 日韩国产一区二| 99久久精品国产麻豆演员表| 日韩欧美一区中文| 亚洲一区二区三区三| 豆国产96在线|亚洲| 欧美电影免费观看完整版| 亚洲制服丝袜av| 92国产精品观看| 国产三级欧美三级| 久久精品国产免费| 欧美麻豆精品久久久久久| 玉足女爽爽91| 99久久精品情趣| 国产精品网曝门| 国产激情视频一区二区在线观看| 在线播放中文字幕一区| 亚洲成人免费看| 欧美性猛片aaaaaaa做受| 亚洲丝袜精品丝袜在线| 成人avav影音| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲h动漫在线| 色欧美片视频在线观看在线视频| 久久精品亚洲精品国产欧美| 麻豆高清免费国产一区| 91精品国产欧美一区二区| 天天综合色天天| 欧美日韩美少妇| 首页亚洲欧美制服丝腿| 717成人午夜免费福利电影| 亚洲成av人片www| 精品视频全国免费看| 亚洲成人一二三| 欧美精品第1页| 日韩精品五月天| 日韩欧美国产成人一区二区| 老汉av免费一区二区三区| 精品久久一区二区三区| 极品美女销魂一区二区三区| 精品国产一区二区三区四区四 | 国产精品一区2区| 久久久久国产精品免费免费搜索| 亚洲精选在线视频| 欧美日韩三级视频| 免费观看一级欧美片| 久久蜜桃av一区精品变态类天堂 | www国产成人免费观看视频 深夜成人网| 免费在线观看精品| 久久免费看少妇高潮| 成人午夜电影网站| 夜夜精品浪潮av一区二区三区| 欧美麻豆精品久久久久久| 久久精品国产精品亚洲综合| 国产午夜精品久久久久久久| 99久久精品久久久久久清纯| 亚洲一区影音先锋| 日韩精品一区二区三区视频在线观看 | 国产成人久久精品77777最新版本| 亚洲精品一区二区三区蜜桃下载| 国产美女一区二区三区| 国产精品福利一区二区三区| 欧美这里有精品| 九一久久久久久| 亚洲色图19p| 日韩欧美国产一二三区| 成人激情免费网站|