首页 > 其他分享 >从本地读取两个数组,计算一元线性回归

从本地读取两个数组,计算一元线性回归

时间:2024-06-07 20:33:56浏览次数:20  
标签:std 一元 读取 double sum file 线性 include vecx

#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;
}

 

标签:std,一元,读取,double,sum,file,线性,include,vecx
From: https://www.cnblogs.com/wangchenggen/p/18237825

相关文章

  • Codeforces Round 949 (Div. 2)D. Turtle and Multiplication(欧拉路径、线性筛、思维
    Problem-D-Codeforces  按照官方正解做即可,顺带存个jiangly板子。1#include<bits/stdc++.h>23usingi64=longlong;4std::vector<int>minp,primes;56voidsieve(intn){7minp.assign(n+1,0);8primes.clear();910......
  • 机器学习算法(一):1. numpy从零实现线性回归
    系列文章目录机器学习算法(一):1.numpy从零实现线性回归机器学习算法(一):2.线性回归之多项式回归(特征选取)@目录系列文章目录前言一、理论介绍二、代码实现1、导入库2、准备数据集3、定义预测函数(predict)4代价(损失)函数5计算参数梯度6批量梯度下降7训练8可视化一下损失总结前......
  • Spark读取http数据写入hive
    http请求hutool,json转换数据写入到rdd,之后转换为sparksqlSparkSessionspark=SparkSession.builder().master("yarn").appName("json2hive").config("hive.exec.dynamic.partition","true").config("......
  • 运筹学习题Python精解——线性规划
    题1某企业有三个车间生产同一种产品。每件产品由四个零件1和三个零件2组成。两个零件需耗用两种原材料A和B。已知这两种原材料的供应量分别为300kg和500kg。由于三个车间拥有的设备及工艺条件不同,每个工班原材料耗用量和零件产量也不同。见下表(三个车间每班用料和生产......
  • 锐捷校园网自助服务系统 login_judge.jsf 任意文件读取漏洞复现(XVE-2024-2116)
    0x01产品简介锐捷校园网自助服务系统是锐捷网络推出的一款面向学校和校园网络管理的解决方案。该系统旨在提供便捷的网络自助服务,使学生、教职员工和网络管理员能够更好地管理和利用校园网络资源。0x02漏洞概述校园网自助服务系统/selfservice/selfservice/module/scgroup......
  • I Doc View 在线文档预览 qJvqhFt.json 任意文件读取漏洞复现(XVE-2024-2115)
    0x01产品简介iDocView是一个在线文档解析应用,旨在提供便捷的文件查看和编辑服务。0x02漏洞概述iDocView是一个在线文档预览系统/view/qJvqhFt.json接口处存在任意文件读取漏洞,未授权的攻击者可以利用此接口并携带默认token读取服务器敏感文件信息,使系统处于极度不安全的......
  • Azure 函数(Node.js):如何从代码中读取上传到 Azure 证书刀片的公钥(.cer)?
    我在Node.js上运行了AzureFunctions。(另外,请注意,通过应用程序服务计划运行的底层操作系统是Windows)让我先绕道而行。一直以来,我都是从Node.js代码访问AzureKeyVault,因此我知道如何从Node.js代码访问KeyVault,这样看起来就像这样:co......
  • 两个一元多项式运算
    给定两个一元多项式和一个运算符号【+、-、*】,请编写程序实现对应运算符号的两个一元多项式的运算,并输出结果。输入描述:第一行给出第一个多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数k_i和指数x_i(绝对值均为不超过1000的整数)第二行给出第二个多项式非零项......
  • 线性插值出现负值
    在线性插值过程中出现负数可能有几种原因:数据不适合线性插值:线性插值是基于线性关系进行估算的方法。如果数据在插值区间内存在非线性或不光滑的变化,线性插值可能无法准确地反映数据的真实趋势,从而导致插值结果出现负数。插值区间外的外推:线性插值是通过已知数据点之间的线......
  • Python神技:pd.read_excel怎样读取多sheet页数据
    哈喽,大家好,我是木头左!今天,我要分享的是一个非常实用的Python技能,那就是如何在Python的pandas库中使用pd.read_excel函数来读取Excel文件的多个sheet页数据。一、为什么要读取Excel的多个sheet页数据?在数据分析和处理的过程中,经常需要处理包含多个sheet页的Excel文件。比如,你......