python实现最小二乘法的线性回归_最小二乘法求线性回归的python实现

原文:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_38003892/article/details/84495172

1 核心思想

通过最小化方差,使得拟合结果无限接近目标结果。

2 通过一元线性方程举例说明

3 通过python实现一元线性拟合

import matplotlib.pyplot as plt

import random

# 用于存储x,y拟合数据

x = []

y = []

# 数据个数

n = 10

# 随机生成x,y

for i in range(n):

x.append(random.randint(0, 9))

y.append(random.randint(0, 9))

print(x, y)

# 根据推到出来的公式计算k,b

sum_xy = 0

sum_x = 0

sum_y = 0

sum_xx = 0

for i in range(n):

sum_xy += x[i] * y[i]

sum_x += x[i]

sum_y += y[i]

sum_xx += x[i] ** 2

print(sum_xy, sum_x, sum_y, sum_xx)

k = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x ** 2)

b = sum_y / n - k * sum_x / n

print(k, b)

# 根据x计算拟合的y值

new_y = []

for i in range(n):

new_y.append(k * x[i] + b)

# 画出原始数据点以及拟合好的直线

plt.title("Least squares")

plt.xlim(right=10, left=0)

plt.ylim(top=10, bottom=0)

plt.xlabel("x")

plt.ylabel("y")

plt.plot(x, new_y, color='black')

plt.scatter(x, y, color='red')

plt.show()

运行结果(因为数据时随机生成的每次代码运行结果都会不同)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邻接表1 - 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc-数据结构-图-icoding

邻接表1 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下: typedef int VertexType;typedef enum{DG, UDG }GraphType;typedef struct ArcNode {int adjvex;InfoPtr *info;struct ArcNode *nextarc;}ArcNode;typedef …

.NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记

08 | 配置框架:让服务无缝适应各种环境配置是应用程序发布到各种环境的必备能力,这一节开始详细讲解 ASP.NET Core 的配置框架配置框架的核心包有两个,一个抽象包,一个实现包Microsoft.Extensions.Configuration.AbstractionsMicr…

python循环遍历所有目录_python 遍历文件夹

一、os.walk()os.walk(top, topdownTrue, οnerrοrNone, followlinksFalse)可以得到一个三元tupple(dirpath, dirnames, filenames),第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。dirpath 是一个string,代表目录…

邻接表2 -试在邻接表存储结构上实现图的基本操作 del_vertex-数据结构-图-icoding

邻接表2 试在邻接表存储结构上实现图的基本操作 del_vertex,相关定义如下: typedef int VertexType;typedef enum{DG, UDG }GraphType;typedef struct ArcNode{int adjvex;InfoPtr *info;struct ArcNode *nextarc; }ArcNode;typedef struct VNode{Vert…

python提取文件名的5-6位_python提取文件名

首先声明本人初涉python,由于是自学,而且课余时间比较琐碎,所以打算分主次两条线。主的一条线是看python教程,但是这样实在枯燥,所以又有了次的一条线,就是写一些小程序练练手,只想总结下所得&a…

【译】探索更轻量的Electron替代品来托管Blazor桌面应用程序

本文翻译自 ASP.NET 项目组的 Steve Sanderson 的博客,发表于 2019 年 11 月 1 日。Steve Sanderson 是 Blazor 最早的创造者。这篇文章发布后还有一篇后续,是介绍一个在本文提到的跨平台 webview 概念的落地项目 WebWindow ,我也会接着翻译过…

MATLAB-矩阵基本语法知识

数组创建 1.要创建每行包含四个元素的数组,请使用逗号 (,) 或空格分隔各元素。 这种数组为行向量。 要创建包含多行的矩阵,请使用分号分隔各行。 a [1 2 3; 4 5 6; 7 8 10] 2.创建矩阵的另一种方法是使用 ones、zeros 或 rand 等函数。例如&#x…

mysql 剔除不可见字符_不可见字符,Excel里最隐蔽的坑

小伙伴们好啊,我是流浪铁匠,今天为大家介绍的是excel数据整理时一类最常见的坑——不可见字符。从unichar函数对应的uincode字符集结果来说,excel大约有111万个字符,其中有不少字符的性质千奇百怪,由于unichar/unicode…

同为Chromium浏览器,Edge却被“特别关照”

谷歌会在 Microsoft Edge 用户访问 Chrome Web Store(Chrome 网上应用商店) 时发去一条通知提醒,建议用户切换到 Google Chrome 以安全地使用扩展程序,通知还提供了下载 Google Chrome 的链接。不过有趣的是,其他 Chro…

数据结构-查找-总结归纳知识点

//第八章 查找 //基于线性表的查找 // 1.顺序查找法 //思想:所给的关键字和表中元素的关键字逐个比较 分为:设置监视哨和不设监视哨 监视哨:r[0]防止越界 //2.折半查找法 要求:顺序储存结构(不能链表),按照关键字大小有序排列(正序和逆序) 思想:利用mid(highlow)/2(整数). …

噪声与振动控制工程手册_声学分享客噪声与振动控制篇大型隔振工程案例介绍...

第一期《声学分享客--噪声与振动控制篇》将于今日上午10:00~11:00,在线直播,欢迎各位上线交流。主讲人:苏宏兵报告内容:大型隔振工程案例介绍报告人介绍:苏宏兵,工学硕士&#xff0c…

微软推出全新的Windows 10系统图标

微软已开始通过 Fast Ring 向 Insider 用户推出新的 Windows 10 系统图标,这些新图标基于 Fluent 设计。更改从邮件和日历等程序开始,微软将陆续推出更多彩色图标。这些图标将在接下来的几个月中通过 Microsoft Store 的应用更新和 Windows 10 的发布预览…

python123读取文本文件并排序输出_Python按字段对文本文件排序

按某个字段对文本文件中的数据进行排序时遇到问题。以后可能会有多个字段。txt是数千行代码。我是python新手,所以我的代码可能有点混乱。例如,这是我将从中读取的文本文件:stuff123 1200 id-aaaa stuarttest.com322 1812 id-wwww machine-sw…

.NET Core开发实战(第9课:命令行配置提供程序)--学习笔记

09 | 命令行配置提供程序:最简单快捷的配置注入方法这一节讲解如何使用命令行参数来作为配置数据源命令行配置(提供程序的)支持三种格式的命令1、无前缀的 keyvalue 模式2、双中横线模式 --keyvalue 或 --key value3、正横杠模式 /keyvalue 或…