delta规则我已经通过这个代码培训与Matlab中
clf;
%# random points
N = 1000;
a1=-1; b1=4;
a2=-4; b2=4;
x1 = a1 + (b1-a1).*rand(N,1);
y1 = a2 + (b2-a2).*rand(N,1);
x2 = a1 + (b1-a1).*rand(N,1);
y2 = a2 + (b2-a2).*rand(N,1);
hold all;
% Plot line y=-3/2*x+3
t = -1:.1:4;
z = -3/2*t+3;
plot(t,z)
n=300;
x1new=zeros(n,1);
y1new=zeros(n,1);
error1=zeros(n,1);
x2new=zeros(n,1);
y2new=zeros(n,1);
error2=zeros(n,1);
p1=rand(N,1); % make error distribution for class 1
d1=0;
d2=0;
i=1;
while d1<n && i<N
if (3*x1(i)+2*y1(i)<=6)
if p1(i) > 0.2
d1=d1+1;
x1new(d1)=x1(i);
y1new(d1)=y1(i);
error1(d1)=0;
plot(x1new(d1), y1new(d1),'-bs', 'MarkerFaceColor','b', 'MarkerSize',5)
else
d2=d2+1;
x2new(d2)=x1(i);
y2new(d2)=y1(i);
error2(d2)=1;
plot(x2new(d2), y2new(d2),'-bs', 'MarkerFaceColor','r', 'MarkerSize',5)
end
end
i=i+1;
p2=rand(N,1); % make error distribution for class 2
if (3*x2(i)+2*y2(i)>6)
if p2(i) > 0.2
d2=d2+1;
x2new(d2)=x2(i);
y2new(d2)=y2(i);
error2(d2)=0;
plot(x2new(d2), y2new(d2),'-bs', 'MarkerFaceColor','r', 'MarkerSize',5)
else
d1=d1+1;
x1new(d1)=x2(i);
y1new(d1)=y2(i);
error1(d1)=1;
plot(x1new(d1), y1new(d1),'-bs', 'MarkerFaceColor','b', 'MarkerSize',5)
end
end
i=i+1;
end
% Export to workplace
assignin('base', 'Class1', [x1new,y1new,error1]);
assignin('base', 'Class2', [x2new,y2new,error2]);
这里创建两个类点的点是结果 http://i.stack.imgur.com/nBK8D.png
每个班级应有300点。生成的数据不是线性可分的 - 每个类的20%违反线性可分性。
但是,现在我必须delta规则工作:
使用感知,做delta规则(的Widrow - 霍夫)在200点的训练,以确定权重和偏见,和分类剩下100分。
使用一个Adaline的,做200点与delta规则(的Widrow - 霍夫)确定权重和偏见,剩下的100点的分类培训。
*对于每种类型的单元,绘制显示收敛速度的曲线图(均方误差在防止在横轴训练实例的数目,垂直轴)
*对于每种类型的单位绘制图表,显示正确分类示例与训练集中示例数量的比率(百分比)(使用100个示例学习并对剩余200个示例进行分类 - 计算正确分类数据的百分比;然后使用125个示例进行培训并对剩余的175个进行分类;使用150个进行培训并对剩余的150个进行分类;使用175进行培训并对剩余的125个进行分类;使用200进行培训和分类剩下的100个)
你能帮我做一下在三角洲规则在Matlab?
没有人可以帮我弄清楚如何解决这个问题? – minhbsu
你见过这个吗?http://www.mathworks.com/matlabcentral/fileexchange/26696-deltarule – kitchenette
但是我需要为函数定义一些参数 – minhbsu