📄 chapter5_6_figure.m
字号:
function[vactor,count_num,error_rate]=function5_6_figure(data1,data2);
lereror_rate=ones(1,50);
lcount_num=zeros(1,50);
lcount_vactor=ones(1,50);
for i=1:100;
%随机提取数据并对其增广
%类一的数据提取
range=randperm(50);
learn_range=range(1:25);
test_range=(26:50);
learn_data1=data1(learn_range,[3 4]);
test_data1=data1(test_range,[3 4]);
vactor=ones(25,1);
aug_learn_data1=horzcat(vactor,learn_data1);
aug_test_data1=horzcat(vactor,test_data1);
%类二的数据提取
learn_range=range(1:25);
range=randperm(50);
test_range=(26:50);
test_data2=data2(test_range,[3 4]);
learn_data2=data2(learn_range,[3 4]);
aug_learn_data2=horzcat(vactor,learn_data2);
aug_test_data2=horzcat(vactor,test_data2);
%合并;
learn_data=vertcat(aug_learn_data1,-aug_learn_data2);
test_data=vertcat(aug_test_data1,-aug_test_data2);
%计算开始z
a=[0 0 0];%初始化
k=0;
while 1;
k=k+1;
jp=[0 0 0];
cmp=a;
for m=1:50;
if a*learn_data(m,:)'<=0
jp=jp+learn_data(m,:);
end;
end;
a=a+1*jp;
if a==cmp
break;
end;
end;
%测试
% error=0;
% for count=1:50;
% if a*test_data(count,:)'<=0;
% error=error+1;
% end;
% end;
error=sum(a*test_data'<=0);
lerror_rate(i)=1-error/50;
lcount_num(i)=k;
lvactor(i,:)=a;
end;
error_rate=lerror_rate;
count_num=mean(lcount_num);
vactor=mean(lvactor);
xielv=-vactor(2)/vactor(3);
pianyi=-vactor(1)/vactor(3);
x=-6:1:6;
y=xielv*x+pianyi;
plot(x,y);
hold on;
plot(test_data1(:,1),test_data1(:,2),'rd',test_data2(:,1),test_data2(:,2),'bo');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -