我刚开始学习机器学习,需要帮助在Matlab中实现高斯RBF。
我知道它在做什么,但不确定如何在Matlab中实现它
回答:
function K = rbf(coord,sig)%function K = rbf(coord,sig)%% 从输入坐标计算RBF核矩阵%%输入参数% coord = 包含所有样本的矩阵,每行是一个样本% sig = sigma,核宽度;平方距离在指数中被平方sig除%%输出参数% K = RBF核矩阵(= exp(-1/(2*sigma^2)*(coord*coord')^2))%n=size(coord,1);K=coord*coord'/sig^2;d=diag(K);K=K-ones(n,1)*d'/2;K=K-d*ones(1,n)/2;K=exp(K);%% 之前的版本:%%% n = size(coord,1);% for i=1:n% K(i,i)=1;% for j=1:i-1% K(i,j)=exp(-norm(coord(i,:)-coord(j,:))^2/sig^2);% 应该是% % 2*sig^2!% K(j,i)=K(i,j);% end% end
(来源)