梯度下降法线性回归拟合c语言
时间: 2023-06-27 14:07:14 浏览: 97
梯度下降法-线性拟合
以下是使用梯度下降法进行线性回归拟合的C语言代码示例:
```
#include <stdio.h>
#define ALPHA 0.01 // 学习速率
#define MAX_ITER 1000 // 最大迭代次数
double theta0 = 0, theta1 = 0; // 参数theta0和theta1的初始值
double x[5] = {1, 2, 3, 4, 5}; // 输入数据x
double y[5] = {1, 3, 2, 5, 4}; // 输出数据y
int main() {
int i, j;
double h, error0, error1, diff0, diff1;
for (i = 0; i < MAX_ITER; i++) { // 迭代
error0 = error1 = 0;
for (j = 0; j < 5; j++) { // 遍历所有数据
h = theta0 + theta1 * x[j];
error0 += h - y[j];
error1 += (h - y[j]) * x[j];
}
diff0 = ALPHA * error0 / 5;
diff1 = ALPHA * error1 / 5;
theta0 -= diff0;
theta1 -= diff1;
}
printf("theta0 = %lf, theta1 = %lf\n", theta0, theta1); // 输出参数值
return 0;
}
```
其中,`ALPHA`表示学习速率,`MAX_ITER`表示最大迭代次数,`theta0`和`theta1`表示线性回归模型的参数,`x`和`y`分别表示输入和输出数据。
在每次迭代中,遍历所有数据,计算预测值`h`与实际值之间的差异,然后根据梯度下降法的更新公式对参数进行更新。
最终输出参数值即为线性回归模型的最终拟合结果。
阅读全文