C++ 1元线性回归模型代码实现
时间: 2024-10-16 10:18:39 浏览: 36
在C++中实现1元线性回归模型通常涉及到数据结构、数学计算和迭代优化。这里是一个简化的例子,使用基本的数学公式,假设我们有一个简单的线性方程y = mx + b:
```cpp
#include <iostream>
#include <vector>
// 线性回归模型类
class LinearRegression {
public:
// 初始化函数,设置初始斜率和截距
LinearRegression(double m = 0, double b = 0) : slope(m), intercept(b) {}
// 训练函数,根据输入数据更新斜率和截距
void train(const std::vector<double>& x_data, const std::vector<double>& y_data) {
double sum_x = 0, sum_y = 0, sum_xy = 0, sum_xx = 0;
for (size_t i = 0; i < x_data.size(); ++i) {
sum_x += x_data[i];
sum_y += y_data[i];
sum_xy += x_data[i] * y_data[i];
sum_xx += x_data[i] * x_data[i];
}
int n = x_data.size();
slope = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x);
intercept = (sum_y - slope * sum_x) / n;
}
// 预测函数,给定x返回预测值
double predict(double x) const {
return slope * x + intercept;
}
private:
double slope, intercept; // 斜率和截距
};
int main() {
// 示例数据
std::vector<double> x_data = {1, 2, 3, 4, 5};
std::vector<double> y_data = {2, 3, 4, 5, 6};
// 创建并训练模型
LinearRegression model;
model.train(x_data, y_data);
// 使用模型预测
double x = 6.0;
double prediction = model.predict(x);
std::cout << "Predicted value at x=" << x << " is: " << prediction << std
阅读全文