梯度下降算法 c语言,梯度下降法的C语言实现

本文介绍了使用C语言实现梯度下降算法进行二元线性回归的过程,探讨了没有常数项对结果的影响,以及学习率对收敛速度的作用。作者指出,正确的数据维度设置和自适应学习率调整能提升算法效率。同时,文章提到了批梯度下降与随机梯度下降的区别,并分析了它们在运行次数上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int main()

{

//double matrix[4][3] = { {4,3,1},{6,8,1},{18,26,1},{55,77,1}};

//double result[4] = {7,10,55,120};

double matrix[4][3]={ {1,4,1},{2,5,1},{5,1,1},{4,2,1}};

double result[4]={19,26,19,20};

double error_sum = 0;

double theta[3] = {0,0,0}; //theta的初值全部设为,从零开始

int i,temp;

for(temp=1;temp<=1000;temp++) //这里我没有用之前别人博客上面的参考,他的代码实际上不是run了一千遍,而是run了1000/len(data)遍。

{ //temp用来表示迭代次数,然后i表示样本的数量,每次更新temp,都要迭代一轮i

int k,j;

for(i = 0;i<3;i++) //因为训练数据是4个 所以i从0到3

{

double h = 0;

for(k = 0;k <3;k++) //k负责迭代的是x的维数,也就是theta的维数,之前说过了,二位数据要设置三维的维度

{

h = h + theta[k]*matrix[i][k]; //用累加和求预测函数h(x)并且记住,每次求完h算完残差之后,都要把h重新归零

}

error_sum = h - result[i];

for(k = 0;k<3;k++)

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值