热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

二维直线回归(拟合)算法(一)

一、最小二乘法(LeastSquares):假设样本集单个样本的线性函数为:为解二元一次方程中的a,b,给上式两边乘以xi得到(也可以两边乘yi):方程组: 解样本集方程组: 矩阵

一、最小二乘法(Least Squares):

假设样本集单个样本的线性函数为:

二维直线回归(拟合)算法(一)

为解二元一次方程中的a,b,给上式两边乘以xi得到(也可以两边乘yi):

二维直线回归(拟合)算法(一)

方程组:

 二维直线回归(拟合)算法(一)

解样本集方程组:

二维直线回归(拟合)算法(一)

 

矩阵形式: 

二维直线回归(拟合)算法(一)

 

对矩阵二维直线回归(拟合)算法(一) 求逆:

 二维直线回归(拟合)算法(一) 

 则:

二维直线回归(拟合)算法(一)

二维直线回归(拟合)算法(一)

二维直线回归(拟合)算法(一) 

 1        public static void LeastSquare(List points, out double a, out double b)
 2         {
 3             int N = points.Count;
 4             if (N <2)
 5             {
 6                 a = 0;
 7                 b = 0;
 8                 return;
 9             }
10             double X1 = 0, Y1 = 0, X2 = 0, X1Y1 = 0;
11             for (int i = 0; i i)
12             {
13                 X2 += points[i].X * points[i].X;
14                 X1 += points[i].X;
15                 X1Y1 += points[i].X * points[i].Y;
16                 Y1 += points[i].Y;
17             }
18             a = (X1Y1 * N - X1 * Y1) / (X2 * N - X1 * X1);
19             b = (X2 * Y1 - X1 * X1Y1) / (X2 * N - X1 * X1);
20         }
View Code
推荐阅读
  • 探讨如何在给定数组中寻找一个连续子数组,使其和至少达到指定值s,同时确保子数组长度最短。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
  • 本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • Linux内核中的内存反碎片技术解析
    本文深入探讨了Linux内核中实现的内存反碎片技术,包括其历史发展、关键概念如虚拟可移动区域以及具体的内存碎片整理策略。旨在为开发者提供全面的技术理解。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • Java中List的forEach方法与字符串拼接的兼容性问题
    本文深入探讨了在Java中使用List的forEach方法时遇到的字符串拼接问题,提供了有效的解决方案及背后的原理分析,旨在帮助开发者更好地理解和解决此类问题。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 个人博客:打开链接依赖倒置原则定义依赖倒置原则(DependenceInversionPrinciple,DIP)定义如下:Highlevelmo ... [详细]
  • 使用Java计算两个日期之间的月份数
    本文详细介绍了利用Java编程语言计算两个指定日期之间月份数的方法。文章通过实例代码讲解了如何使用Joda-Time库来简化日期处理过程,旨在为开发者提供一个高效且易于理解的解决方案。 ... [详细]
author-avatar
谁是我在寻找
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有