• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab练习程序(logistic分类)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

logistic模型能够对数据进行二分类。

比如我们有两组二维空间数据,最终要求的是一个分类直线,可以设定为计算w(1)+w(2)*x+w(3)*y=0这样的直线。

问题就变为了如何求w的问题。

网上有很多推导,这里就不推导了,不过还是要写几个关键公式。

可以设定logistic函数为:

设定损失函数为:

对J中w求导得到迭代方向:

然后不断迭代就行了:

下面代码中y就是data(:,4),即我们的标签项;x就是data(:,1:3)。

matlab程序如下:

clear all;close all;clc;

mu1=[0 0];
S1=[0.5 0.1];
data1=mvnrnd(mu1,S1,100);
plot(data1(:,1),data1(:,2),'r.');
hold on;

mu2=[1.5 1.5];
S2=[0.4 0.3];
data2=mvnrnd(mu2,S2,100);
plot(data2(:,1),data2(:,2),'g.');

data1 = [data1 zeros(length(data1),1)];
data2 = [data2 ones(length(data2),1)];      %两组数据打标签
data = [data1;data2];                       %数据组合
data = [ones(length(data),1) data];         %数据第一列增加其次项

w = rand(1,3);
alpha = 0.01;
for i=1:1000
    w = w + alpha*(data(:,4)' - 1./(1+exp(-(w*data(:,1:3)'))))*data(:,1:3);     %交叉熵求导迭代
end

x = min(data(:,2))-1:0.1:max(data(:,2))+1;
y = (-w(1)-w(2)*x)/w(3);
plot(x,y,'b');

结果如下:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ubuntu20.04 安装 MATLAB2018b发布时间:2022-07-18
下一篇:
结构化程序设计1 - 零基础入门学习Delphi08发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap