最小二乘法的推导公式如下: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更新
上面的我实现了

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐