c#一元线性回归总结

使用C#实现线性回归 我将介绍如何在[SciSharp](https://github.com/scisharp)的TensorFlow.NET中训练线性回归模型。 什么是线性回归? 线性回归是一种线性方法,用于因变量与一个或多个自变量之间的关系进行建模。 考虑单个感兴趣变量y和单个预测变量x的情况。预测变量由许多名称调用:因变量,输入,特征; 预测变量通常称为自变量,输出,结果。 我们有一些数据$ D = {x {\... 阅读详情

方法是网上搜的,说下自己的理解,就是根据参数来计算出k和b,不能直接就使用,对多个参数进行拟合一下

using System;
using System.Collections.Generic;
 
namespace LinearRegression
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Point> _PList = new List<Point>();
            _PList.Add(new Point(1, 3.09));
            _PList.Add(new Point(2, 5.06));
            _PList.Add(new Point(3, 7.03));
            _PList.Add(new Point(4, 9.12));
            _PList.Add(new Point(5, 10.96));
            _PList.Add(new Point(6, 12.91));
            _PList.Add(new Point(7, 15.01));
 
            Line line = LinearRegressionSolve(_PList);
            Console.WriteLine("Y = " + line.K + " X " + "+ " + line.B);
 
            line = LinearRegressionSolve2(_PList);
            Console.WriteLine("Y = " + line.K + " X " + "+ " + line.B);
 
            line = LinearRegressionSolve3(_PList);
            Console.WriteLine("Y = " + line.K + " X " + "+ " + line.B);
            Console.ReadKey();
        }
 
        static Line LinearRegressionSolve(List<Point> _plist)
        {
            double k = 0, b = 0;
            double sumX = 0, sumY = 0;
            double avgX = 0, avgY = 0;
            foreach (var v in _plist)
            {
                sumX += v.X;
                sumY += v.Y;
            }
            avgX = sumX / (_plist.Count + 0.0);
            avgY = sumY / (_plist.Count + 0.0);
 
            //sumA=(x-avgX)(y-avgY)的和 sumB=(x-avgX)平方
            double sumA = 0, sumB = 0;
            foreach (var v in _plist)
            {
                sumA += (v.X - avgX) * (v.Y - avgY);
                sumB += (v.X - avgX) * (v.X - avgX);
            }
            k = sumA / (sumB + 0.0);
            b = avgY - k * avgX;
 
            Line line = new Line(k, b);
            return line;
        }
 
        static Line LinearRegressionSolve2(List<Point> _plist)
        {
            double k = 0, b = 0;
            double sumX = 0, sumY = 0;
            double sumXY = 0, sumXX = 0;
            foreach (var v in _plist)
            {
                sumX += v.X;
                sumY += v.Y;
                sumXY += v.X * v.Y;
                sumXX += v.X * v.X;
            }
 
            k = (sumX * sumY / (_plist.Count + 0.0) - sumXY) / (sumX * sumX / (_plist.Count + 0.0) - sumXX);
            b = (sumY - k * sumX) / (_plist.Count + 0.00);
 
            Line line = new Line(k, b);
            return line;
        }
 
        static Line LinearRegressionSolve3(List<Point> _plist)
        {
            double k = 0, b = 0;
            double sumX = 0, sumY = 0;
            double avgX = 0, avgY = 0;
            double sumXY = 0, sumXX = 0;
            foreach (var v in _plist)
            {
                sumX += v.X;
                sumY += v.Y;
                sumXY += v.X * v.Y;
                sumXX += v.X * v.X;
            }
            avgX = sumX / (_plist.Count + 0.0);
            avgY = sumY / (_plist.Count + 0.0);
 
            k = (sumXY-avgY*sumX) / (sumXX - avgX * sumX);
            b = avgY - k * avgX;
 
            Line line = new Line(k, b);
            return line;
        }
 
    }
 
    public class Line
    {
        public double K { get; set; }
        public double B { get; set; }
 
        public Line(double k, double b)
        {
            K = k;
            B = b;
        }
    }
 
    public class Point
    {
        public double X { get; set; }
        public double Y { get; set; }
 
        public Point(double x, double y)
        {
            X = x;
            Y = y;
        }
    }
 
}

用C#绘制线性回归曲线 在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。(这反过来又应当由多个相关的因变量预测的多元线性回归区别,而不是一个单一的标量变量。) 在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。这些模型被叫做线性模型。最常用的线性回归建模是给定X值的y的条件均值 阅读详情

相关推荐

一元线性回归(原理)

前言: 一元线性回归是数据挖掘的基础模型,其中包含了非常重要的数学回归的概念,是学习多元回归,广义线性回归的基础。本文主要讲解1)基础原理2)数学推导3)R语言演示,来介绍一元线性回归。 关键词:一元线性回归基础原理、最小二乘法、数学推导、R语言 整体思路: 根据已知点求一条直线,希望直线与各个点距离之和为最小,根据最小二乘法算出最小时直线的参数。

骆驼分析师的博客 9670

C# | 线性回归算法的实现,只需采集少量数据点,即可拟合整个数据集

什么是线性回归呢?简单来说,线性回归是一种用于建立两个变量之间线性关系的统计方法。在我们的软件开发中,线性回归可以应用于数据分析、预测和优化等领域。什么情况下会用到线性回归呢?举个例子,假设你需要采集0-100之间的十个值,并使用这十个值来拟合出所有的值。这样做的好处是,我们可以通过少量的数据点来得到一个可以描述整个数据集的模型。

猿长大人 2972

从手动计算到代码实现:C#线性回归的性能飞跃与实战指南

文章摘要 本文通过7个步骤详解C#实现回归分析的完整流程,解决传统Excel分析效率低下的问题。从最小二乘法数学原理到代码实现(一元/多元回归),涵盖数据结构设计、可视化呈现(OxyPlot图表)、性能优化技巧(Span/并行计算)及评估体系(R²计算)。实战案例展示如何应对千万级数据分析,对比不同方法在计算时间、精度和内存占用上的差异,提供异常处理、标准化预处理等避坑指南,帮助开发者构建高效可靠的回归分析系统。

java专栏 1618

使用C#构建线性回归预测数据

一元线性回归,也称为简单线性回归,是线性回归中最基础的形式,它只涉及一个自变量。这种回归模型试图找到一条直线,以最好地拟合给定的数据点,从而能够预测因变量的值。一元线性回归的数学模型可以表示为:y=β0​+β1​x。为了确定这条最佳拟合直线,需要估计 β0​ 和 β1​ 的值。

w1824575989的博客 424

从基础到实战:实现一元线性拟合

本文系统介绍了一元线性拟合的理论与实践,涵盖其数学原理、历史背景、算法实现和适用场景。一元线性拟合通过最小二乘法建立直线方程y=ax+b,具有计算高效(O(n)复杂度)、结果可解释等特点。文章详细推导了参数求解过程,提供完整的C#实现代码(包括数据校验、拟合计算和预测功能),并通过示例验证算法准确性。该方法适用于线性趋势数据(如传感器校准、经济分析等),但对非线性数据、异常值敏感。作为机器学习基础,一元线性拟合是学习更复杂模型的重要起点,其核心思想在数据分析中具有广泛应用价值。

工业上位机开发工程师,专注C#底层算法与工控仪器开发。从零手写信号滤波、曲线拟合、机器视觉、排序与密码学哈希,纯原生实现零第三方库,附数学推导与可编译源码,可移植STM32/PLC。 809

C#实现最小二乘法一元线性拟合:从公式推导到代码落地

最小二乘法是数值计算中求解线性回归的基础方法,通过最小化残差平方和得到闭式解,无需迭代即可确定斜率和截距。在C#工程实践中,纯代码实现线性拟合可避免第三方数学库依赖,直接嵌入工控、测量和报表场景。一元线性回归的核心是累加五个统计量后套用公式,同时计算R²评估拟合优度。针对传感器数据、实验数据等场景,还需处理CSV读取、离群点剔除和批量拟合。本文分享一个可直接编译的C#线性拟合求解器,涵盖公式推导、代码实现、避坑排查与回归测试。

weixin_31423955的博客 190

一元线性回归 C#

什么是一元线性回归: https://blog.csdn.net/cx943024256/article/details/79124113 https://blog.csdn.net/Moxiaoaijing/article/details/81109220 https://blog.csdn.net/hongbin_xu/article/details/77102810 第三篇的比较好点...

HeBizhi1997的博客 2431

c#线性回归公式

最小二乘法

750

c#模拟线性回归

最近刚开始接触机器学习,在这里使用c#模拟一元线性回归,先上图看效果 因为源码中有一些控件是自己封装的,所以就不上传可运行的程序集了,贴出核心代码,以供参考,如有不对,请多多给予建议 1 private void ryButtonX1_Click(object sender, EventArgs e) 2 { 3 strin...

weixin_30865427的博客 501

CNTK与C#结合实现线性回归实战

线性回归是一种用于预测连续值的统计学方法,其模型假设特征变量和目标变量之间存在线性关系。线性回归试图找到一条直线,尽可能接近所有的数据点,即最小化预测值与实际值之间的差异。在数学上,一元线性回归可以表示为:其中,(y) 是因变量,(x) 是自变量,(\beta_0) 是截距项,(\beta_1) 是斜率,(\epsilon) 表示误差项。多元线性回归则包含多个自变量,形式如下:在机器学习中,线性回归属于监督学习算法,需要一个带有标签的训练集来训练模型。

weixin_35756624的博客 875

C#实现多元线性回归与最小二乘法

本文还有配套的精品资源,点击获取 简介:多元线性回归通过统计分析研究多个自变量与一个因变量的关系。C#实现此算法涉及矩阵运算和最小二乘法。本源码通过构建设计矩阵、梯度下降等步骤,使预测值与实际值尽可能接近。掌握此方法有助于提升编程和数据分析技能。 1. 多元线性回归概述 在数据分析和统计建模领域,多元线性回归是一种强有力的工具,用于研究两个或两个以上独立变量...

weixin_30978239的博客 1049

绘制线性回归和多元线性回归

本文用C#语言实现一元线性回归和多元线性回归。结合“winform双缓冲绘制坐标轴图像”https://www.luweidong.cn/details/89实现绘制曲线图,效果直观。

cduoa的专栏 1241

C#一元线性回归分析预测法

一元线性回归分析预测法模型,根据历史数据预测下期数据值

机器学习之线性回归

这个系列是我学习coursera上《机器学习》课程的笔记,边学边练。上面有一些习题,课程要求用Octave(或Matlab)完成,但是这两个软件太强大,掩盖了很多细节,而且我写Octave代码的时候,总有种支离破碎的感觉,最后还是用C#去实现了,果然不适合当科学家,还是老老实实作码农吧。 界面使用WPF,我还自己写了个做图表的库,本来准备好好写写的,但是真的是太烦,特别是API的设计,因为是

hekedaandxu的专栏 482

电镀技术:微型制造的原子级加法工艺与核心优势

电镀是一种利用电解原理在基材表面沉积金属层的表面处理技术,其本质是通过电场控制溶液中金属离子的迁移与还原,实现原子级的可控沉积。这一过程的核心在于对电流密度、温度、添加剂等参数的精密调控,从而实现对镀层结晶结构、性能的“编程”。从技术价值看,电镀作为一种“加法制造”工艺,在微观尺度上具有无与伦比的保形性和材料灵活性,能够实现复杂三维结构的均匀覆盖与功能复合。在应用场景上,它尤其契合现代微型化制造的需求,例如在集成电路的铜互连填充、高密度PCB板微孔金属化、MEMS传感器电极制备以及柔性电子器件制造中发挥着不

weixin_42524842的博客 528

deepin启动异常处理

修复的命令在执行时会输出大量的修复信息,正常情况下修复完之后输入exit命令回车后,即可正常启动系统。

whxxiang的博客 4370

C#实现最小二乘法:从数学原理到工程实践

在数据处理与机器学习领域,线性回归是揭示变量间关系的基础模型,其核心是通过拟合找到数据背后的规律。最小二乘法作为实现线性回归的经典数学原理,通过最小化误差平方和来求解最优参数,确保了模型的精确性与数值稳定性。这一方法在预测分析、趋势拟合等场景中具有极高的技术价值,是金融分析、科学实验和商业智能等应用的基石。本文聚焦于C#环境下的工程实现,详细解析了从一元到多元线性回归的完整代码方案,并深入探讨了使用MathNet.Numerics库处理数值稳定性、多重共线性等热词问题,以及通过残差分析评估模型效果的实践技巧

weixin_30843121的博客 223

差分隐私(Differential Privacy)

差分隐私,拉普拉斯机制和高斯机制的证明

Michale_L的博客 1万+

一元线性回归

提供三个不同的计算方法 C#代码实现: using System; using System.Collections.Generic; namespace LinearRegression { class Program { static void Main(string[] args) { List<Point...

luckypeng的专栏 660

【MATLAB】绘制泽尼克多项式

上次只给了公式没有给代码,很多小伙伴表示不是很认可。今天直接把代码发上来了。

HPC_ZY 5576

从零到多智能体:Google Agent开发套件(ADK)入门指南

ADK促进自定义工具生产的能力是其优势之一。本质上,工具只是一个带有描述性文档字符串的Python函数。

独立开发,substack顶级编辑 2490

项目实战-电力光缆辅助分析系统(C#,Mysql,Gmap.Net)Visual Studio 2019 Winform开发

项目实战-电力光缆辅助分析系统一、系统目的:现有存在问题功能描述预期结果二、系统概况:1.总述:2. 技术需求:3. 环境介绍:4. 功能概述5. 整体功能概述图三、数据库设计:1.sql模式下的数据库结构设计:2. 数据库连接设计:四、程序模块的设计与实现1.光缆线路管理1) 光缆线路展示与更新2) 光缆线路的添加与删除3) 光缆线路信息的查看2.光缆线路节点管理1)光缆线路节点的增加与删除2) 光缆线路节点信息查看3.线路光缆统计分析1)光缆空芯率统计分析2)故障统计分析4. 光功率预测1)光功率录

daining424的博客 1135

华为OD机试真题 新系统2026-04-01 Python&JS 实现【空间占用计算】

员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。

MISAYAONE的博客 1300

线性回归的推导与java代码

1.1线性回归的数学表达 1.2线性回归的java代码实现java实现一元线性回归:public class DataPoint { public float x; public float y; public DataPoint(float x,float y){ //DataPoint类的构造函数 this.x = x;

ygq114的博客 4806

【重要内容】敬告读者

由于优快云近期将要搞事情,此专栏建议已购买的用户将内容保存到本地。尚未购买的用户请待9月1日后再决定是否需要购买。如此规则上线,本人将会关闭此专栏。并寻找其他渠道进行发布。

魔落的博客 910

(持续更新中!)详解【计算机类&面试真题】军队文职考试 ——第二期(真题+解析)| 网络协议的三个核心要素;交互式系统中的非剥夺策略;中断和陷入的区别;可变分区管理中的硬件机制;数据库系统的优点

本篇博客将讨论军队文职面试(计算机类)的几个关键问题。我们将介绍网络协议的核心要素(帮助你理解网络通信的基本原理)、交互式系统中的非剥夺策略(解释为何这是一个优秀的策略以及其对用户体验、系统稳定性和可预测性的影响)、中断和陷入的区别(从引起原因、处理机制、权限级别和应用等方面进行阐述)、可变分区管理的硬件机制以及数据库系统与文件系统的优点比较。通过阅读本文,您将深入了解这些话题,为面试准备和实际应用提供有价值的知识。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1706
上一篇: 转义字符的使用
下一篇: (Spline)三次样条求解
奇点码农
博客等级 码龄19年 60粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值