C++ 2元线性回归模型代码实现
时间: 2024-10-15 07:05:23 浏览: 27
C++_实现多元线性回归可任意指定几元
在C++中实现二元线性回归模型通常会涉及到一些数学库,如Eigen库,它提供了矩阵运算的支持。下面是一个简单的例子,使用Eigen库构建一个基础的二元线性回归模型:
```cpp
#include <Eigen/Dense>
#include <iostream>
// 定义数据结构
struct DataPoint {
double x;
double y;
};
// 线性回归模型参数
class LinearRegressionModel {
private:
Eigen::VectorXd m; // 斜率向量
Eigen::VectorXd c; // 截距向量
public:
LinearRegressionModel(const std::vector<DataPoint>& data) {
// 计算斜率和截距
const int n = data.size();
Eigen::MatrixXd X(n, 2); // 设定X(特征矩阵)
for (int i = 0; i < n; ++i) {
X(i, 0) = data[i].x;
X(i, 1) = 1; // 添加常数项
}
m = (X.transpose() * X).inverse() * X.transpose() * Eigen::VectorXd::Ones(n);
c = Eigen::VectorXd::Zero(1) - m * Eigen::VectorXd::Ones(n) * data[0].y;
}
// 预测函数
double predict(double x1, double x2) const {
return m(0) * x1 + m(1) * x2 + c(0);
}
};
int main() {
// 示例数据点
DataPoint data[] = {{1, 2}, {2, 4}, {3, 6}};
LinearRegressionModel model(data, sizeof(data) / sizeof(DataPoint));
// 使用模型预测
double prediction = model.predict(4, 5);
std::cout << "Predicted value for (4, 5): " << prediction << std::endl;
return 0;
}
```
这个代码首先创建了一个`DataPoint`结构体表示输入的数据点,然后定义了`LinearRegressionModel`类,其中包含了计算模型参数(m和c)以及预测值的方法。注意这只是一个基础版本,实际应用中可能需要添加更多的错误检查和优化。
阅读全文