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

📄 regression.m

📁 做时间序列预测的svm程序
💻 M
字号:
function y=Regression(Alpha,Flag,B,X,Y,TKF,x)
%--------------------------------------------------------------------------
%  Regression.m
%  与SVMNR.m函数配套使用的仿真测试函数
%  函数功能:
%  本函数相当于支持向量得到的回归方程的解析方程,输入一个待测试的列向量x,得到一
%  个对应的输出值y
%--------------------------------------------------------------------------
%  输入参数列表
%  Alpha    支持向量的加权系数(α-α*)向量
%  Flag     1×l标记,0对应非支持向量,1对应边界支持向量,2对应标准支持向量
%  B        回归方程中的常数项
%  X        输入样本原始数据,n×l的矩阵,n为变量个数,l为样本个数
%  Y        输出样本原始数据,1×l的矩阵,l为样本个数
%  x        待测试的原始数据,n×1的列向量
%  输出参数列表
%  y        仿真测试的输出值

%%
%-----------------------核函数参数初始化------------------------------------
switch TKF
    case 1
        %线性核函数  K=sum(x.*y)
        %没有需要定义的参数
    case 2
        %多项式核函数  K=(sum(x.*y)+c)^p
        c=0.1;
        p=2;
    case 3
        %径向基核函数  K=exp(-(norm(x-y))^2/(2*sigma^2))
        sigma=6;
    case 4
        %指数核函数  K=exp(-norm(x-y)/(2*sigma^2))
        sigma=3;
    case 5
        %Sigmoid核函数  K=1/(1+exp(-v*sum(x.*y)+c))
        v=0.5;
        c=0;
    otherwise
        %自定义核函数,需由用户自行在函数内部修改,注意要同时修改好几处!
        %暂时定义为  K=exp(-(sum((x-y).^2)/(2*sigma^2)))
        sigma=8;
end
%%
%%
%----------------------数据归一化处理---------------------------------------
[X,minX,maxX]=premnmx(X);
x=2*((x-minX)./(maxX-minX))-1;
[Y,minY,maxY]=premnmx(Y);
%%
%%
%---------------------计算仿真测试的输出值----------------------------------
l=length(Alpha);
SUM=0;
for i=1:l
    if Flag(i)>0
        switch TKF
            case 1
                SUM=SUM+Alpha(i)*sum(x.*X(:,i));
            case 2
                SUM=SUM+Alpha(i)*(sum(x.*X(:,i))+c)^p;
            case 3
                SUM=SUM+Alpha(i)*exp(-(norm(x-X(:,i)))^2/(2*sigma^2));
            case 4
                SUM=SUM+Alpha(i)*exp(-norm(x-X(:,i))/(2*sigma^2));
            case 5
                SUM=SUM+Alpha(i)*1/(1+exp(-v*sum(x.*X(:,i))+c));
            otherwise
                SUM=SUM+Alpha(i)*exp(-(sum((x-X(:,i)).^2)/(2*sigma^2)));
        end
    end
end
y=SUM+B;
%%
%%
%--------------------反归一化处理-------------------------------------------
y=postmnmx(y,minY,maxY);

⌨️ 快捷键说明

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