最小二乘法拟合直线c++
最小二乘法的推导公式如下:y = bx + ac++代码实现如下:double k, b; //y=k*x+bvoid leastSquares(const vector<double> &X, const vector<double> &Y) { //最小二乘法生成线性回归方程size_t n = X.size();double x_average = 0
·
最小二乘法的推导公式如下:y = bx + a
c++代码实现如下:
double k, b; //y=k*x+b
void leastSquares(const vector<double> &X, const vector<double> &Y) { //最小二乘法生成线性回归方程
size_t n = X.size();
double x_average = 0.0, y_average = 0.0;
double xy_sum = 0.0, x2_sum = 0.0;
for (int i = 0; i < n; i++) {
x_average += X[i];
y_average += Y[i];
xy_sum += X[i] * Y[i];
x2_sum += X[i] * X[i];
}
x_average /= n;
y_average /= n;
k = (xy_sum - n * x_average * y_average) / (x2_sum - n * x_average * x_average);
b = y_average - k * x_average;
}
double getY(double x) {
return k * x + b;
}
使用过程中,只需将数组X和数组Y传入该函数,即可得到线性回归方程。
2021.8.14更新
上面的我实现了
更多推荐
所有评论(0)