Octave实现线性回归(梯度下降)

Octave实现线性回归(梯度下降)

这几天看了吴恩达老师的视频,看到神经网络的时候想着把以前的东西巩固一下,所以用Octave实现了一下线性回归。
我这就先直接贴代码,过几天再来加注释。

function jVal = costFunction(theta)
    sum_ = 0;
    len = size(theta)(1);
    load('train3.txt')
    % load('train2.txt')
    % x = data(:,1:len-1);
    x = [linspace(1,1,50)' data(:,1:len-1)]';
    y = data(:,len);
    m=size(x,1); 
    h_y = fitFunction(x,theta)';
    delta = h_y - y;
    % sum(sum(delta.* x')
    % sum(delta)
    jVal=sum(delta.^2);
    % gradien(1)=sum(delta)/m  %梯度值
    % gradien(2)=sum(delta.* x)/m;
function data = randData(len)
    data = [];
    for c = [1:1:len];
        a = [1:1:50];
        for b = a
            a(b) = (1-rand(1)*0.15)*c*b;
        end
        data = [data a'];
    end
end

function hx = fitFunction(x,theta)

    % hx = theta(1) + theta(2) * x;
    hx = theta' * x;
function [optTheta,functionVal,exitFlag] = GradientFunction()
    options = optimset('GradObj','off','MaxIter',100000);  
    initialTheta = zeros(3,1);  
    [optTheta,functionVal,exitFlag] = fminunc(@costFunction,initialTheta,options);
    % data = randData(3);
    load('train3.txt');
    % scatter(data(:,1),data(:,2),'*');

    scatter3(data(:,1),data(:,2),data(:,3));
    hold on
    x = [linspace(1,1,50)' [1:1:50]' [1:2:100]' ];
    % y =  optTheta(1)  + optTheta(2) * x;
    y =  optTheta' *x';
    plot3(x(:,2),x(:,3),y);
    % plot(x,y)
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值