梯度下降算法(c++简易实现)

16人阅读 评论(2) 收藏 举报
#include <iostream>
#include <utility>
#include <vector>
using namespace std;

pair<double,double> trian_data(vector<pair<double,double>> v)
{
    double theta_zero=0.0, theta_one=0.0;

    double studyspeed = 0.1;
    int size_v = v.size();

    int counts = 0;

    while (counts<100)
    {
        double theta_zero_copy = theta_zero;
        double theta_one_copy = theta_one;

        double total_zero=0.0;
        double differ_zero=0.0;

        double differ_one = 0.0;
        double total_one = 0.0;

        auto it = v.begin();
        for (;it != v.end();it++)
        {
            differ_zero = theta_zero_copy + theta_one_copy*(it->first) - (it->second);

            differ_one = differ_zero*(it->first);

            total_zero = total_zero + differ_zero;

            total_one = total_one + differ_one;
        }


        theta_zero = theta_zero - studyspeed*(double)(1.0 / size_v)*total_zero;
        theta_one = theta_one - studyspeed*(double)(1.0 / size_v)*total_one;

        counts++;
    }

    pair<double, double> result_data(theta_zero, theta_one);
    return result_data;

}
int main()
{

    //样本数据
    pair<double, double> p1(0,1.1);
    pair<double, double> p2(1, 2.1);
    pair<double, double> p3(2, 3.2);
    pair<double, double> p4(3, 4.3);

    vector<pair<double, double>> data;
    
    data.push_back(p1);
    data.push_back(p2);
    data.push_back(p3);
    data.push_back(p4);
    //

    //训练数据,得出结果
    pair<double, double> p_res;
    p_res=trian_data(data);
    //


    cout << " thetazero " <<p_res.first << " thetaone " << p_res.second << endl;

    double x;
    cout << " input x ";
    cin >> x;
    cout << p_res.first + p_res.second*x << endl;

}

查看评论

机器学习-数据挖掘-梯度下降算法C++实现

  • 2011年06月16日 17:26
  • 1.11MB
  • 下载

C++代码实现梯度下降算法并给出测试用例

此处仅给出代码实现,具体原理及过程请看前面的博文 测试文件输入格式如下: 2 10 0.01 10 2104 3 399900 1600 3 329900 2400 3 369000 1416 ...
  • u014403897
  • u014403897
  • 2015-04-24 15:09:54
  • 5219

批量梯度下降算法和随机梯度下降算法的代码实现

批量梯度下降算法和随机梯度下降算法的代码实现 随机梯度下降和批量梯度下降都是梯度下降方法的一种,都是通过求偏导的方式求参数的最优解。批量梯度下降算法:,。是通过对每一个样本求偏导,然后挨个更新。(...
  • qq_29828623
  • qq_29828623
  • 2016-03-07 20:59:20
  • 1463

梯度下降算法的C++实现

#include #include #include using namespace std; int main() { double theta0 = 0, theta1 = 0; ...
  • taoyanqi8932
  • taoyanqi8932
  • 2016-09-27 21:41:58
  • 2332

一个梯度下降算法的例子

一个梯度下降算法的例子flyfish gradient descent函数是f(x)=x**4-3*x**3+2 python写法f(x)=x^4-3*(x^3)+2 C++ 写法导数是 f’(...
  • flyfish1986
  • flyfish1986
  • 2017-01-24 10:45:37
  • 2061

机器学习梯度下降算法js实现演示

  • 2014年04月30日 10:49
  • 3KB
  • 下载

线性回归介绍及分别使用最小二乘法和梯度下降法对线性回归C++实现

线性回归介绍及分别使用最小二乘法和梯度下降法对线性回归C++实现
  • fengbingchun
  • fengbingchun
  • 2017-09-08 11:09:34
  • 2138

用C++实现简易的文本编辑器

  • 2016年07月04日 18:54
  • 10.84MB
  • 下载

用Visual C++ 编写的简易浏览器

  • 2009年08月21日 20:42
  • 432KB
  • 下载

参数学习算法之梯度下降

参照《机器学习》这本书的第4.4.3节。 一.解决目标及情景假设: 当给定一些数据,输入x向量已知,输出y也已知,设计一个线性函数y=h(x)去拟合这些数据。 既然是线性函数,在此不...
  • yinlili2010
  • yinlili2010
  • 2014-09-25 16:35:11
  • 814
    个人资料
    等级:
    访问量: 424
    积分: 37
    排名: 192万+
    文章分类
    文章存档
    最新评论