Predicting Mortality of ICU Patients: The PhysioNet/Computing in Cardiology Challenge 2012 1.0.0
(1,522 bytes)
function K = kernelList(kernelName)
if strcmp(kernelName, 'linear')
%K = @(a,b) linearKernel(a, b);
elseif strcmp(kernelName, 'mlp')
K = @(a,b,k) mlpKernel(a, b, k(1), k(2));
elseif strcmp(kernelName, 'poly')
K = @(a,b,c) polyKernel(a, b, c(1), c(2));
elseif strcmp(kernelName, 'gauss')
K = @(a,b, sigma2) gaussKernel(a, b, sigma2);
elseif strcmpi(kernelName, 'ratquad')
K = @(a,b,c) rationalQuadKernel(a, b, c);
else
disp('must enter a correct name!')
end
function k = anovaKernel(a, b, sigma, n, d)
%a is m x dim0
%b is n x dim0 (n can equal m)
%k is mxn
k = zeros(size(a,1), size(b,1));
for k = 1:n
for i = 1:size(a,1)
for j = 1:size(b,1)
k(i,j) = k(i,j) + (exp(-sigma*((a(i,:).^k)-(b(j,:).^k)).^2)).^d;
end
end
end
end
function k = rationalQuadKernel(a, b, c)
%a is m x dim0
%b is n x dim0
%k is mxm
k = zeros(size(a,1), size(b,1));
for i = 1:size(a,1)
for j = 1:size(b,1)
x = a(i,:);
y = b(j,:);
k(i,j) = 1-(norm(x-y).^2/(norm(x-y).^2+c));
end
end
end
function k = polyKernel(a, b, c, d)
%a is m x dim0
%b is n x dim0
%k is mxn
k = (a*b' + c).^round(d);
end
function k = mlpKernel(a, b, k1, k2)
%a is m x dim0
%b is n x dim0
%k is mxn
%used for ann as well
k = tanh(k1*(a*b') + k2);
end
function k = gaussKernel(a, b, sigma2)
%a is m x dim0
%b is n x dim0
%k is mxm
k = zeros(size(a,1), size(b,1));
for i = 1:size(a,1)
for j = 1:size(b,1)
k(i,j) = exp((norm(a(i,:)-b(j,:)).^2)/sigma2);
end
end
end
end