【matlab】机器学习线性分类和随机梯度下降

让我们直接从代码开始,下面开始分布讲解
【注】想要mnist请回复博主


% z=+1,-1;
% result=-0.3;负类 -1  分对了   +1 分错了 y*result>0
%        =0.4;正类 +1  分对了   -1 分错了

% z*(w'*x)=z*w'*x=w'*z*x=w'*y
    
%w1*x1+w2*x2+w3=0;
%w'*x+b=0;
%w'x=0;
% (x1,x2,1)
% (w1,w2,w3)

data=randn(2,40);
data(:,21:40)=data(:,21:40)+5;

 scatter(data(1,1:20),data(2,1:20),'*');
    hold on;
scatter(data(1,21:40),data(2,21:40),'+');
    hold on;
 

w=randn(3,1);
data(3,:)=ones(1,40);
z=ones(1,40);
z(21:40)=-1;
for i=1:40
    data(:,i)=data(:,i).*z(i);
end 

for i=1:40
    result1(:,i)=w'*data(:,i);
end 

for s=1:1000
for i=1:40
    result1(:,i)=w'*data(:,i);
end 
dydx=zeros(3,1);

for i=1:40
    if(result1(:,i)<=0)
        dydx=dydx+data(:,i);
    end
end
dydx=-1.*dydx;

amda=1;
w=w-amda.*dydx;
end



%x2=-(w1*x1+w3)/w2;
%w1=randn(1,1);
%w2=randn(1,1);
%w3=randn(1,1);

%w(1)*x(1)+w(2)*x(2)+b=0
%w'x+b=0;
w=randn(2,1);
b=randn(1,1);
%w=randn(784,1);

b=randn(10,1);
w=randn(784,10); 
for i=1:60000
    results(:,i)=w'.*trdata(:,i)+b;
end

[maxv,indexv]=max(results);


%w1*x1+w2*x2+...+w784*x784+w785=0;

%data(1,1)*w1+data(2,1)*w2+w3

for i=1:40
   result(i)=w'*data(:,i)+b;
end
%x2=-(w1*x1+w3)/w2;
x1=[-4,8];
x2=-1.*(w(1).*x1+w(3))./w(2);
plot(x1,x2);

%data(2,1)


for i=21:40
    scatter(data(1,i),data(2,i),'+');
    hold on;
end

在这里插入图片描述
首先我们先画出一幅散点图,这样我们好进行下面的分类
在这里插入图片描述
有了散点图之后,我们再自己画线
在这里插入图片描述
w1 w2 w3是三个线性系数,这里不再赘述
在这里插入图片描述
这里,我们换成向量的形式,784=28*28在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述的向量都是是列向量
在这里插入图片描述
接下来我们考虑,如果要分类类型多的时候,盲区存在,改怎么处理

解决方法就是,max胜出原则,代入后,更大的胜出

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
考虑784是个超平面,不好画出、描绘出来
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
升维
在这里插入图片描述
在这里插入图片描述
然后,没有b了
在这里插入图片描述
在这里插入图片描述
大于零分对了 小于零分错了

在这里插入图片描述
w和最小错分数是阶梯函数,这样不好优化,我们就松弛他
在这里插入图片描述
松弛后,更加平滑
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由此我们考虑梯度下降法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章