1、梯度下降c代码
来源:互联网 发布:java 服务器 物联网 编辑:程序博客网 时间:2024/06/01 07:55
batch gradient descent(批量梯度下降)
#include<stdio.h>
int main()
{
//如何求y=2x^2极小值
int i;
double x=-2.0,a=0.05;
for(i=1;i<=100;i++){
x=x-a*4*x;
printf("%lf\t",x);
}
//如何求解x=[x1,x2]使y=5x1^2+6x2^2+7x1x2-8的极小值?
//一般想法是分别对x1,x2求导等于0 ,求解极值
double x1=2.0,x2=2.0;
for(i=1;i<=100;i++){
x1=x1-a*(10*x1+7*x2);
x2=x1-a*(12*x2+7*x1);
printf("%lf %lf",x1,x2);
}
//梯度下降
double d[4][3]={{1.0,1.0,4.0},{1.0,2.0,5.0},{1.0,5.0,1.0},{1.0,4.0,2.0}};//x0=1
int y[4]={19,26,19,20};
double theta[3]={0.0,2.0,5.0};//theta=0
float b=0.01;
float loss=1000;
int s,j,k;
double h=0.0,cha;
for( s=1;s<1000&&loss>0.0001;s++){
for( j=0;j<4;j++){
h=0;
for( k=0;k<3;k++){
h=h+theta[k]*d[j][k];//求出h=θ[i]*x[i]
}
cha=y[j]-h;//求出yi-hi
for( k=0;k<3;k++){
theta[k]=theta[k]+a*cha*d[j][k];//迭代theta
}
}
printf("%lf %lf %lf\t",theta[0],theta[1]),theta[2];//迭代多少次输出多少
}
return 0;
}
stochastic gradient descent(随机梯度下降)【这部分复制过来的】
- int main(void)
- {
- float matrix[4][2]={{1,4},{2,5},{5,1},{4,2}};
- float result[4]={19,26,19,20};
- float theta[2]={2,5};
- float loss = 10.0;
- for(int i =0 ;i<100&&loss>0.001;++i)
- {
- float error_sum=0.0;
- int j=i%4; //产生随机数j
- {
- float h = 0.0;
- for(int k=0;k<2;++k)
- {
- h += matrix[j][k]*theta[k];
- }
- error_sum = result[j]-h;
- for(int k=0;k<2;++k)
- {
- theta[k] = theta[k]+0.01*(error_sum)*matrix[j][k];
- }
- }
- printf("%f,%f\n",theta[0],theta[1]);
- float loss = 0.0;
- for(int j = 0;j<4;++j) //损失是指最后求出theta后,样本预测值和真实值之间的差值
- {
- float sum=0.0;
- for(int k = 0;k<2;++k)
- {
- sum += matrix[j][k]*theta[k];
- }
- loss += (sum-result[j])*(sum-result[j]);
- }
- printf("%f\n",loss);
- }
- return 0;
- }
- 1、梯度下降c代码
- 梯度下降代码
- 梯度下降+代码
- 梯度下降:代码
- 梯度下降法-python代码
- 梯度下降法Python代码
- 梯度下降法1
- C语言实现随即梯度下降,批量梯度下降法
- 深入浅出梯度下降法1
- 梯度下降详解(包含代码例子)
- 梯度下降来龙去脉附matlab代码
- LR 逻辑回归代码 (梯度下降)
- 梯度下降求解逻辑回归(代码)
- 梯度下降原理及线性回归代码实现(python/java/c++)
- 梯度下降法的C语言实现
- 梯度下降
- 梯度下降
- 梯度下降
- 【Web API系列教程】2.1 — ASP.NET Web API中的路由机制
- APP设计说明书概述
- 认识机器学习
- 在ubuntu系统安装配置QT
- 学习总结(大数运算,简单dp,线段树,并查集,最短路)
- 1、梯度下降c代码
- ios微信支付
- JavaScript基础学习篇一——基础语法
- 数据库---mysql 事务
- 【leetcode】【2】Add Two Numbers
- SQL2005批量删除字段说明描述
- C++笔记:1
- 自定义Google搜索引擎
- 生态足迹计算器