机器学习实验基于Logistic回归和Sigmoid函数的分类.docxVIP

机器学习实验基于Logistic回归和Sigmoid函数的分类.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机器学习实验基于Logistic回归和Sigmoid函数的分类

[实验项目] 基于 Logistic回归和Sigmoid函数的分类 [实验目的] 分析已知样本,求出回归系数,利用梯度上升法不断精确回归系数,并分别输出至二维坐标中 [实验原理] Sigmoid函数:对于任何输入,输出为0到1之间的数,根据其大于0.5或小于0.5分为两类 [设计内容] logistic回归的一般过程 (1)收集数据:采用任意方法收集数据。 (2)准备数据:由于需要进行距离计算,因此要求数据类型为数值型。另外,结构化数据格式则最佳。 (3)分析数据:采用任意方法对数据进行分析。 (4)训练算法:大部分时间将用于训练,训练的目的是为了找到最佳的分类回归系数。 (5)测试算法:一旦训练步驟完成,分类将会很快。 (6)使用算法:首先,我们需要输入一些数据,并将其转换成对应的结构化数值;接着,基于训练好的回归系数就可以对这些数值进行简单的回归计算,判定它们属于哪个类别,在这之后,我们就可以在输出的类别上做一些其他分析工作。 [设计过程] — 包括程序数据结构设计过程,代码模块设计,程序流程图等。 函数logistic_grad_ascent(X,y,num): logistic回归函数,X为已知数据(本实验中为二维数组),y为每组数据对应的概率值(0到1之间),n为迭代次数(自行添加的) 函数sigmoid(z)= 1.0 ./ (1.0 + exp(-z)): 其中z=theta0+theat1*x1+theta2*x2(x1,x2为q1x.data中的数据) 主程序: 读取q1x.data;q1y.data并取出数据,做循环,根据q1y中的概率分两类打印出q1x中的点至二维坐标中,再调用logistic_grad_ascent函数得到theta,根据theta画出最佳拟合直线; [主要数据结构] — 包括代码主要数据结构,及其注释。 由于两个函数及学习数据已经给出,此处只附自己写的主程序 load q1y.dat load q1x.dat %读取数据 x=q1x(:,1); y=q1x(:,2); X = [x,y]; p=q1y(:,1); %将数据赋给变量 for i=1:99 %根据点的类别画出两种点x和o if p(i)==1 plot (x(i),y(i),bx) else if p(i)==0 plot(x(i),y(i),bo) end end hold on end %带入函数求回归系数;迭代次数为10 [theta, ll] = logistic_grad_ascent(X,p,10); a = [0:0.1:8]; b = (-theta(1)-theta(2)*a)/theta(3); plot(a,b) %画出拟合直线 text(8,(-theta(1)-theta(2)*8)/theta(3), \leftarrow 10); %标注 [theta, ll] = logistic_grad_ascent(X,p,50); a = [0:0.1:8]; b = (-theta(1)-theta(2)*a)/theta(3); plot(a,b) text(8,(-theta(1)-theta(2)*8)/theta(3), \leftarrow 50); [theta, ll] = logistic_grad_ascent(X,p,500); a = [0:0.1:8]; b = (-theta(1)-theta(2)*a)/theta(3); plot(a,b) text(8,(-theta(1)-theta(2)*8)/theta(3), \leftarrow 500); [theta, ll] = logistic_grad_ascent(X,p,5000); a = [0:0.1:8]; b = (-theta(1)-theta(2)*a)/theta(3); plot(a,b) text(8,(-theta(1)-theta(2)*8)/theta(3), \leftarrow 5000); [theta, ll] = logistic_grad_ascent(X,p,10000); a = [0:0.1:8]; b = (-theta(1)-theta(2)*a)/theta(3); plot(a,b) text(8,(-theta(1)-theta(2)*8)/theta(3), \leftarrow 10000); [代码调试过程] — 包括程序编译、执行过程中遇到的主要错误,及解决过程说明。 从文件中读取数据时行列弄反 Theta0,theta1,theta2次序弄错

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档