c语言实现线性回归
时间: 2023-08-12 15:08:49 浏览: 259
线性回归是一种广泛使用的监督学习算法,它可以用于预测数值型变量的值。下面是一个用 C 语言实现的简单线性回归的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define LEARNING_RATE 0.01 // 学习率
#define MAX_ITERATIONS 1000 // 最大迭代次数
// 线性回归模型
double linear_regression(double x[], double y[], int n, double *b)
{
double sum_x = 0.0, sum_y = 0.0, sum_xy = 0.0, sum_xx = 0.0;
for (int i = 0; i < n; i++) {
sum_x += x[i];
sum_y += y[i];
sum_xy += x[i] * y[i];
sum_xx += x[i] * x[i];
}
double x_mean = sum_x / n;
double y_mean = sum_y / n;
double denominator = sum_xx - sum_x * x_mean;
if (denominator == 0.0) {
return 0.0;
}
*b = (sum_xy - sum_x * y_mean) / denominator;
return y_mean - *b * x_mean;
}
int main()
{
// 样本数据
double x[] = {1.0, 2.0, 3.0, 4.0, 5.0};
double y[] = {1.5, 3.2, 4.8, 6.9, 8.3};
int n = 5;
double b; // 斜率
double a = linear_regression(x, y, n, &b); // 截距
printf("a = %f, b = %f\n", a, b);
// 预测新数据
double x_new = 6.0;
double y_new = a + b * x_new;
printf("y_new = %f\n", y_new);
return 0;
}
```
在这个示例中,我们使用了样本数据 `x` 和 `y`,分别表示自变量和因变量。然后我们使用 `linear_regression` 函数求出回归方程的截距和斜率,并用 `a` 和 `b` 变量保存它们的值。最后,我们可以用回归方程预测新数据 `x_new` 对应的因变量 `y_new`。
这个示例中的线性回归模型是一个简单的一元线性回归模型。如果要处理多元线性回归问题,需要对代码进行适当的修改。
阅读全文