吴恩达机器学习练习二


机器学习练习二主要与逻辑回归相关。

一. 首先时数据可视化,照着手册做就好。

二. 实现激活函数

逻辑回归主要用于分类,分类结果一般就是0或者1,因此与线性回归的区别就是,针对

需要应用一个激活函数,让他的取值范围落在[0,1]之间

Octave代码实现很简单,就是:

g=1./(1+exp(-z));  %Z可以是向量、矩阵

 

三. 实现代价函数与梯度计算

 

gz=sigmoid(X*theta);% calc g(z)

J1=y'*log(gz);       %calc J cost function first part ,changeto vector calc

J0=(1-y)'*log(1-gz);%calc J cost function second part, change to vector calc

J=-(J1+J0)/m;

 

grad=(gz-y)'*X./m;   %calc gradient ,vector calc

grad=grad';

 

四. theta参数的学习

课程提供了一个比较高效的函数fminunc,用于求解最小化代价函数J(theta)时的参数theta,只要提供我们的代价函数的计算方式,以及梯度公式就好。与线性回归我们自己实现的梯度算法学习算法相比,效率较高。

 

五. 预测函数的实现

其实就是用学到的theta去计算新的样本X所对应的Y值。

h_theta=sigmoid(X*theta);

p=(h_theta>=0.5);

 

六. 正则化

代价函数及梯度计算

主要是为了防止过拟合吧。

gz=sigmoid(X*theta);% calc g(z)

J1=y'*log(gz);       %calc J cost function first part ,changeto vector calc

J0=(1-y)'*log(1-gz);%calc J cost function second part, change to vector calc

 

theta_reg=theta(2:n);

 

reg=theta_reg'*theta_reg;

 

J=-(J1+J0)/m+lambda*reg/(2*m);

 

 

grad(1)=(gz-y)'*X(:,1)./m;   %calc gradient ,vector calc

grad(2:n)=((gz-y)'*X(:,[2:n])./m)'+lambda/m.*theta(2:n);

 

不得不说octave拿来做实验确实强大。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值