当前位置: 代码网 > it编程>编程语言>C/C++ > Matlab——逻辑回归(原理、代码)

Matlab——逻辑回归(原理、代码)

2024年07月31日 C/C++ 我要评论
机器学习之逻辑回归原理,Matlab简单实践

目录

1 逻辑回归原理

2 sigmoid函数 

3 逻辑回归理论公式推导 

4 逻辑回归算法的改进——正则化 

5 matlab实践


1 逻辑回归原理

2 sigmoid函数 

3 逻辑回归理论公式推导 

——模型 

——策略(定义损失函数)

求解w,定义一个指标衡量w的表现,即代价函数,利用最大似然法。

——算法(梯度下降法)

4 逻辑回归算法的改进——正则化 

5 matlab实践

%% 原始数据
%一系列不同重量的车
weight = [2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300]';
%各个重量类型的车的数目
tested = [48 42 31 34 31 21 23 23 21 16 17 21]';
%每个重量的车辆在测试中fail掉的数目
failed = [1 2 0 3 8 8 14 17 19 15 17 21]';
%故障率
proportion = failed ./ tested;
figure(1)
plot(weight,proportion,'s')
xlabel('重量');ylabel('比例');
散点数据
%% 线性拟合
%ployfit(x,y,n)执行多项式拟合,n代表多项式阶数,当n=1时,表示线性关系,返回多项式系数
linearcoef = polyfit(weight,proportion,1)
%value = ployval(p,x)返回多项式的值,p是多项式系数,降序排列
linearfit = polyval(linearcoef,weight);
figure(2)
line2 = plot(weight,proportion,'s',weight,linearfit,'r-',[2000 4500],[0 0],'k:',[2000 4500],[1,1],'k:');
xlabel('重量');ylabel('比例');
set(gcf,'position',[100 100 350 280]);
set(gca,'fontsize',9);
set(line2,'linewidth',1.5)
线性拟合
%% 多项式拟合
%区别在于这里选用3阶多项式,返回的stats是一个结构体,作为polyval函数的输入
%可用于误差估计,ctr包含了均值和方差,可用于对输入x归一化
[cubiccoef,stats,ctr] = polyfit(weight,proportion,3)
cubicfit = polyval(cubiccoef,weight,[ ],ctr); %利用归一化的weight进行多项式拟合
figure(3)
line = plot(weight,proportion,'s',weight,cubicfit,'r-',[2000 4500],[0 0],'k:',[2000 4500],[1,1],'k:');
xlabel('重量');ylabel('比例');
set(gcf,'position',[100 100 350 280]);
set(gca,'fontsize',9);
set(line,'linewidth',1.5)
多项式拟合
%% glmfit拟合
% 在glmfit中一般response是一个列向量,但是当分布是二项分布时,y可以是一个二值向量,
% 表示单次观测中成功还是失败,也可以是一个两列的矩阵,第一列表示成功的次数(目标出现的次数),
% 第二列表示总共的观测次数,因此这里y=[failed,tested]
% 另外指定distri='binomal',link='logit'
[logitcoef1,dev1] = glmfit(weight,[failed tested],'binomial','logit');
% glmval用于测试拟合的模型,计算出估计的y值
logitfit = glmval(logitcoef1,weight,'logit');
figure(4)
line3 = plot(weight,proportion,'bs',weight,logitfit,'r-');
xlabel('重量');ylabel('比例');
set(gcf,'position',[100 100 350 280]);
set(gca,'fontsize',9);
set(line3,'linewidth',1.5)
legend('数据','logistics回归')
logistics回归
%% 预测
[logitcoef,dev,stats] = glmfit(weight,[failed tested],'binomial','logit');
normplot(stats.residp);
weightpred = 2500:500:4000;
% dlo和dhi是置信区间的下限和上限
[failedpred,dlo,dhi] = glmval(logitcoef,weightpred,'logit',stats,0.95,100);
figure(5)
line = errorbar(weightpred,failedpred,dlo,dhi,'r:');
预测误差图


python参考:

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com