欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

机器学习 感知机算法_0(Matlab实现)

发布时间:2024/4/18 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 机器学习 感知机算法_0(Matlab实现) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 效果
  • 代码
    • Main
    • Perceptron
    • Sign

效果

代码

Main

x=[-1 7 13 9 14 14 11 -3 14 1 15 3 1]; y=[1 1 1 -1 -1 -1]';% size_x=size(x); b=ones(1,size_x(2));%初始权值 Error=0;%允许分类错误数量最大值 error=size_x(1);%当前一轮迭代分类错误数量 Step=0.1;%迭代步长while(error>Error)[b, error]=Perceptron(b, x, y, size_x(1), Error, Step); end%作图 plot(x(1:3,1),x(1:3,2),'*'); hold on; plot(x(4:6,1),x(4:6,2),'+'); X=-10:0.5:10; Y=(b(1,1).*X+b(1,3))/(-b(1,2)); plot(X,Y);

Perceptron

function [b, error]=Perceptron(b, x, y, nums_x, Error, Step) %b:感知器当前权值 %x:自变量矩阵 %nums_x:x的规模 %y:目标值矩阵%当y=1, Func(b, x)>=0为分类正确 %当y=-1, Func(b, x)<0为分类正确 %分类正确时, 于是y*Func(b, x)>=0恒成立 %Sum_y*Func(b, x)越大, 分类误差越小 %于是可定义损失函数:-y*Func(b, x), 并求其最小值%分类错误数量 error=0;for i=1:nums_xif(y(i,1)*Sign(b, x(i,:))<0)error=error+1;b=b+Step*(x(i,:).* y(i,1));end end end

Sign

function [y] = Sign(b,x) %接收前向神经元的信号x %信号A转换为信号y %向后向神经元发送信号y%y=bn*xn+b(n-1)*x(n-1)+b(n-2)*x(n-2)+...+b1*x1+b0*1 %b=[bn, b(n-1),...,b1, b0] %x=[xn, x(n-1),...,x1, 1]%计算 y=2*(sum(b.*x)>=0)-1; end

总结

以上是生活随笔为你收集整理的机器学习 感知机算法_0(Matlab实现)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。