从本地读取两个数组,计算一元线性回归
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <vector> #include <numeric> struct LinearRegression { double slope; double intercept; LinearRegression(const std::vector<double>& x, const std::vector<double>& y) { size_t n = x.size(); double sum_x = std::accumulate(x.begin(), x.end(), 0.0); double sum_y = std::accumulate(y.begin(), y.end(), 0.0); double sum_xy = 0.0; double sum_xx = 0.0; for (size_t i = 0; i < n; ++i) { sum_xy += x[i] * y[i]; sum_xx += x[i] * x[i]; } slope = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x); intercept = (sum_y - slope * sum_x) / n; } double predict(double x) const { return slope * x + intercept; } }; void GetVec(std::ifstream &file,std::vector<double> &vec) { std::string line(""); if (std::getline(file, line)) { std::stringstream ss(line); std::string str; while(getline(ss, str, ' ')) { double number = std::stod(str); vec.emplace_back(number); } } } void ReadFile(const char *pFile, std::vector<double> &vecx,std::vector<double> &vecy) { std::ifstream file(pFile); // 替换为你的文件名 if (file.is_open()) { //读取两行 GetVec(file,vecx); GetVec(file,vecy); file.close(); } else { std::cout << "Open File Failed!" << std::endl; } } int main() { std::vector<double> vecx; std::vector<double> vecy; ReadFile("test.txt",vecx,vecy); if (vecx.empty() || (vecx.size() != vecy.size())) { std::cout << "Check Input Failed!"<< std::endl; return -1; } LinearRegression model(vecx, vecy); std::cout << "Slope: " << model.slope << std::endl; std::cout << "Intercept: " << model.intercept << std::endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具