c++实现线性回归
时间: 2023-08-30 13:06:52 浏览: 46
以下是使用C++实现简单线性回归的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <numeric>
#include <cmath>
using namespace std;
// 计算均值
double mean(const vector<double>& v) {
double sum = accumulate(v.begin(), v.end(), 0.0);
return sum / v.size();
}
// 计算方差
double variance(const vector<double>& v) {
double m = mean(v);
double sum = 0.0;
for (double x : v) {
sum += pow(x - m, 2);
}
return sum / (v.size() - 1);
}
// 计算协方差
double covariance(const vector<double>& x, const vector<double>& y) {
double x_mean = mean(x);
double y_mean = mean(y);
double sum = 0.0;
for (int i = 0; i < x.size(); ++i) {
sum += (x[i] - x_mean) * (y[i] - y_mean);
}
return sum / (x.size() - 1);
}
// 计算斜率和截距
void linear_regression(const vector<double>& x, const vector<double>& y, double& slope, double& intercept) {
slope = covariance(x, y) / variance(x);
intercept = mean(y) - slope * mean(x);
}
int main() {
vector<double> x {1, 2, 3, 4, 5};
vector<double> y {1, 3, 2, 3, 5};
double slope, intercept;
linear_regression(x, y, slope, intercept);
cout << "Slope: " << slope << endl;
cout << "Intercept: " << intercept << endl;
return 0;
}
```
这里我们使用了 `vector` 存储数据,并使用 `accumulate`、`pow` 等函数计算数学运算。`mean` 函数用于计算均值,`variance` 函数用于计算方差,`covariance` 函数用于计算协方差,`linear_regression` 函数用于计算斜率和截距,从而得到线性回归模型。