21xrx.com
2024-12-27 22:11:16 Friday
登录
文章检索 我的文章 写文章
C++最小二乘法代码示例
2023-06-24 07:10:32 深夜i     --     --
C++ 最小二乘法 代码示例

最小二乘法是一种经典的数据拟合方法,被广泛应用于数据分析和机器学习等领域。C++作为一种面向对象的高级语言,也可以编写最小二乘法的代码进行数据处理和分析。

下面是一份C++的最小二乘法代码示例,可以用来处理简单的线性回归问题:


#include <iostream>

#include <vector>

#include <cmath>

using namespace std;

class LeastSquares {

public:

  vector<double> fit(vector<double> X, vector<double> Y) {

    int n = X.size();

    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 slope = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x);

    double intercept = (sum_y - slope * sum_x) / n;

    vector<double> result;

    result.push_back(slope);

    result.push_back(intercept);

    return result;

  }

};

int main() {

  vector<double> X 2;

  vector<double> Y 2;

  LeastSquares lsq;

  vector<double> ans = lsq.fit(X, Y);

  cout << "slope: " << ans[0] << endl;

  cout << "intercept: " << ans[1] << endl;

  return 0;

}

在这个示例代码中,我们使用了C++中的vector类来存储数据,包括自变量X和因变量Y。LeastSquares类实现了最小二乘法的拟合过程,其中fit函数中传入了X和Y数据,返回了拟合后的斜率和截距。

在fit函数中,首先要计算出X、Y、XY和XX的和,分别对应了公式中的∑x、∑y、∑xy和∑x²。然后根据公式计算出斜率和截距,并将这两个值保存在一个vector中返回。

我们在main函数中调用了fit函数,并输出了拟合结果的斜率和截距。如果需要拟合其他数据,只需要将X和Y更改成对应的值即可。

总之,C++中的最小二乘法代码实现不但有利于理论掌握,而且也非常适合学习者进行数据分析和机器学习等方面的实践。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复