%采用混合核函数类型:RBF核函数和poly核函数
function omega = kernel_matrix(Xtrain,kernel_type1, kernel_type2,kernel_pars,Xt)
%输入:Xtrain每行为一个输入
nb_data = size(Xtrain,1);
%%检查第一个核函数是否为RBF核函数
if strcmpi(kernel_type1,'RBF_kernel') || strcmpi(kernel_type1,'RBF')
%输入参数小于(等于3)时是训练核矩阵,此处将训练数据映射到核空间
if nargin<5
XXh = sum(Xtrain.^2,2)*ones(1,nb_data);
omega = XXh+XXh'-2*(Xtrain*Xtrain');
omega = exp(-omega./kernel_pars(1));
else
%输入等于4时是将测试数据映射到核空间,此时第一个输入参数为训练数据
%第4个参数为测试数据
XXh1 = sum(Xtrain.^2,2)*ones(1,size(Xt,1));
XXh2 = sum(Xt.^2,2)*ones(1,nb_data);
omega = XXh1+XXh2' - 2*Xtrain*Xt';
omega = exp(-omega./kernel_pars(1));
end
omega1=kernel_pars(4)*omega;
end
%% 检查第二个核函数是否为多项式核函数
if strcmpi(kernel_type2,'poly_kernel') || strcmpi(kernel_type2,'poly')
if nargin<5
omega = (Xtrain*Xtrain'+kernel_pars(2)).^kernel_pars(3);
else
omega = (Xtrain*Xt'+kernel_pars(2)).^kernel_pars(3);
end
omega2=(1-kernel_pars(4))*omega;
上一篇: 护士个人简历表格
下一篇:地图数据设计(四):地图比例尺