今天的部分是利用高斯核函数对分布稍微复杂一点的数据进行分类
这里的高斯核函数是构建新的特征,该特征是关于到其余所有样点的欧式距离。
下面放出代码:
load('ex6data2.mat');
[m n]=size(X);
f=zeros(m,m);
a=0.005
for i=1:m
Xp=X(i,:);
Xp=repmat(Xp,m,1);
Xp=exp(-sum((Xp-X).^2,2)./(2*a));
f(i,:)=Xp';
end
C=1000;
theta=rand(m,1);
for i=1:1000 % 拟合次数
theta=theta-(((f).*(f*theta>=-1))'*(1-y)+((-f).*(f*theta<=1))'*y);
end
sum((1-y).*(f*theta>=-1)+y.*(f*theta<=1)) % 检查分类错误样本数
这里的a比较关键,相当于放缩不同距离的权重,影响着最后的分类精度。
不太了解这个图是怎么画出来的:
统计最后分类的错误样本数量为0。以后有时间会再钻研钻研怎么画出来的。
(代码如果一时半会找不到错误,可以先放放,过几天再看看的说~)