设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1606|回复: 0

matlab-逻辑回归二分类

[复制链接]

29

主题

236

金钱

388

积分

入门用户

发表于 2019-6-11 14:59:16 | 显示全部楼层 |阅读模式

逻辑回归二分类
用到的预测函数为:
1.png
其中,h为预测函数(大于0.5为一类,小于等于0.5为另一类)。θ为各个特征的参数。θ=[θ1,θ2,θ3...]T
损失函数J(θ)为
2.png
利用梯度下降算法进行参数的更新公式如下:
3.png
其中,α是学习率参数,λ是正则项参数,需要自己输入。
用上述三个公式即可写出一般情况下的逻辑回归分类,经试验,其分类效果在我的测试数据下有90%以上准确度。
以下代码为了演示方面,只提供了两个特征值,然后加了一个常数项(经过实验,常数项是不可缺少的)。大家在使用自己的数据集的话只需要进行一点小改动即可。

matlab代码如下: clear clc %% 数据准备 %X = xlsread('C:\Users\user01\Desktop\test.xlsx'); %二分类 随机生成数据。 200个数据 每个数据2个特征 data=1/rand(300,2); label=zeros(300,1); %label(sqrt(data(:,1).^2+data(:,2).^2)<8)=1; label((data(:,2)+data(:,1)>1))=1; %在data上加常数特征项; data=[data,ones(size(data,1),1)]; %打乱循序 randIndex = randperm(size(data,1)); data_new=data(randIndex,; label_new=label(randIndex,:); %80%训练 20%测试 k=0.8/size(data,1); X1=data_new(1:k,:); Y1=label_new(1:k,:); X2=data_new(k+1:end,:); Y2=label_new(k+1:end,:); [m1,n1] = size(X1); [m2,n2] = size(X2); Features=size(data,2); %特征个数 %% 开始训练 %设定学习率为0.01 delta=1; lamda=0.2; %正则项系数 theta1=rand(1,Features); %theta1=[.5,.5]; %%训练模型 %梯度下降算法求解theta(每次都是对全部的数据进行训练) num = 300; %最大迭代次数 L=[]; while(num) dt=zeros(1,Features); loss=0; for i=1:m1 xx=X1(i,1:Features); yy=Y1(i,1); h=1/(1+exp(-(theta1 /* xx'))); dt=dt+(h-yy) /* xx; loss=loss+ yy/log(h)+(1-yy)/log(1-h); end loss=-loss/m1; L=[L,loss]; theta2=theta1 - delta/dt/m1 - lamda/theta1/m1; theta1=theta2; num = num - 1; if loss<0.01 break; end end figure subplot(1,2,1) plot(L) title('loss') subplot(1,2,2) x=0:0.1:10; y=(-theta1(1)/x-theta1(3))/theta1(2); plot(x,y,'linewidth',2) hold on plot(data(label==1,1),data(label==1,2),'ro') hold on plot(data(label==0,1),data(label==0,2),'go') axis([0 1 0 1]) %测试数据 acc=0; for i=1:m2 xx=X2(i,1:Features)'; yy=Y2(i); finil=1/(1+exp(-theta2 / xx)); if finil>0.5 && yy==1 acc=acc+1; end if finil<=0.5 && yy==0 acc=acc+1; end end acc/m2 %测试结果: 测试准确率为95%。

得到的loss曲线为:
4.png
分类图像为:
5.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表