机器学习 感知机算法_0(Matlab实现)
生活随笔
收集整理的這篇文章主要介紹了
机器学习 感知机算法_0(Matlab实现)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 效果
- 代碼
- 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));%初始權(quán)值 Error=0;%允許分類錯誤數(shù)量最大值 error=size_x(1);%當(dāng)前一輪迭代分類錯誤數(shù)量 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:感知器當(dāng)前權(quán)值 %x:自變量矩陣 %nums_x:x的規(guī)模 %y:目標(biāo)值矩陣%當(dāng)y=1, Func(b, x)>=0為分類正確 %當(dāng)y=-1, Func(b, x)<0為分類正確 %分類正確時, 于是y*Func(b, x)>=0恒成立 %Sum_y*Func(b, x)越大, 分類誤差越小 %于是可定義損失函數(shù):-y*Func(b, x), 并求其最小值%分類錯誤數(shù)量 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 endSign
function [y] = Sign(b,x) %接收前向神經(jīng)元的信號x %信號A轉(zhuǎn)換為信號y %向后向神經(jīng)元發(fā)送信號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總結(jié)
以上是生活随笔為你收集整理的机器学习 感知机算法_0(Matlab实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习 K-means算法_0(Mat
- 下一篇: 鸢尾花分类_K近邻(分类通用 数据挖掘入