使用最小二乘法进行线性回归(Python)
已知测得某块地,当温度处于15至40度之间时,数得某块草地上小花朵的数量和温度值的数据如下表所示。现在要来找出这些数据中蕴含的规律,用来预测其它未测温度时的小花朵的数量。
测得数据如下图所示:

import matplotlib.pyplot as plt
import numpy as np
temperatures = [15, 20, 25, 30, 35, 40]
flowers = [136, 140, 155, 160, 157, 175]
def least_square(X, Y):
'''
计算最小二乘法的回归系数
para X: 矩阵,样本特征矩阵,通常包含自变量
para Y: 矩阵,标签向量,通常包含因变量
return: 矩阵,回归系数
'''
# 使用最小二乘法公式计算回归系数 W
# W = (X^T * X)^-1 * X^T * Y
W = (X * X.T).I * X * Y.T
return W
# 创建包含样本的特征矩阵 X
# 第一行是全1的数组,用于截距项,第二行是 temperatures 列表中的元素
X = np.mat([[1, 1, 1, 1, 1, 1], temperatures])
# 创建标签矩阵 Y,包含花朵数量数据
Y = np.mat(flowers)
# 计算回归系数 W
W = least_square(X, Y)
import matplotlib.pyplot as plt
# 设置 Matplotlib 的字体样式,以支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制散点图,显示温度与花朵数量之间的关系
plt.scatter(temperatures, flowers, color="green", label="花朵数量", linewidth=2)
# 绘制数据点形成的线条
plt.plot(temperatures, flowers, linewidth=1)
# 创建 x1 数据,用于生成拟合直线
# linspace 生成15到40之间的100个均匀分布的值
x1 = np.linspace(15, 40, 100)
# 根据回归系数 W 计算对应的 y1 值
y1 = W[1, 0] * x1 + W[0, 0]
# W[1, 0]为w,W[0, 0]为b,y1= w*x1 + b
# 绘制拟合直线
plt.plot(x1, y1, color="red", label="拟合直线", linewidth=2, linestyle='-.')
# 添加图例,并设置位置
plt.legend(loc='lower right')
# 显示图形
plt.show()

使用最小二乘法进行线性回归(Python)的更多相关文章
- Python实现实现基于最小二乘法的线性回归
下面展示利用Python实现基于最小二乘法的线性回归模型,同时不需要引入其他科学计算以及机器学习的库. 利用Python代码表示如下: #首先引入数据集x,和y的值的大小利用Python的数据结构:列 ...
- 【机器学习】线性回归python实现
线性回归原理介绍 线性回归python实现 线性回归sklearn实现 这里使用python实现线性回归,没有使用sklearn等机器学习框架,目的是帮助理解算法的原理. 写了三个例子,分别是单变量的 ...
- [ch04-01] 用最小二乘法解决线性回归问题
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 4.1 最小二乘法 4.1.1 历史 最小二乘法,也叫做 ...
- 最小二乘法公式推导及Python实现
机器学习使用线性回归方法建模时,求损失函数最优解需要用到最小二乘法.相信很多朋友跟我一样,想先知道公式是什么,然后再研究它是怎么来的.所以不多说,先上公式. 对于线性回归方程\(f(x) = ax + ...
- 机器学习3- 一元线性回归+Python实现
目录 1. 线性模型 2. 线性回归 2.1 一元线性回归 3. 一元线性回归的Python实现 3.1 使用 stikit-learn 3.1.1 导入必要模块 3.1.2 使用 Pandas 加载 ...
- 机器学习4- 多元线性回归+Python实现
目录 1 多元线性回归 2 多元线性回归的Python实现 2.1 手动实现 2.1.1 导入必要模块 2.1.2 加载数据 2.1.3 计算系数 2.1.4 预测 2.2 使用 sklearn 1 ...
- 线性回归 python 代码实现
本代码参考自:https://github.com/lawlite19/MachineLearning_Python#%E4%B8%80%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%B ...
- 李宏毅机器学习课程笔记-2.5线性回归Python实战
本文为作者学习李宏毅机器学习课程时参照样例完成homework1的记录. 任务描述(Task Description) 现在有某地空气质量的观测数据,请使用线性回归拟合数据,预测PM2.5. 数据集描 ...
- 线性回归 Python实现
import numpy as np import pylab def plot_data(data, b, m): x = data[:, 0] y = data[:, 1] y_predict = ...
- 线性回归 python小样例
线性回归优点:结果易于理解,计算上不复杂缺点:对非线性的数据拟合不好适用数据类型:数值型和标称型数据horse=0.0015*annualSalary-0.99*hoursListeningToPul ...
随机推荐
- 美化一下WPF自带得ToolTip
对照一下原版和美化以后得版本 原版: ---------- 新版: 新增了 圆角 和 阴影效果; 第一步:新建项,最下面有一个自定义控件,取名为CornerToolTip. 第二步:系统会创建一个Co ...
- [天线原理及设计>基本原理] 1. 辐射机制
1. 辐射机制 1.1. Single Wire 单线 如果电荷不移动,则不会产生电流,也不会产生辐射. 如果电荷以匀速移动: a. 如果电线是直的,并且范围是无限的,则没有辐射. b. 如果电线弯曲 ...
- MFC状态栏的创建与添加进度条
1.首先要创建状态栏 MFC中创建状态栏是用数组来分隔格子的.所以要先弄个数组 下面在自己继承的CWnd类.cpp文件中定义一个静态数组indicators static UINT indicator ...
- Go 闭包捕获问题
在 Go 语言中,闭包(closure)是一个函数值,它引用了其外部作用域中的变量.简而言之,闭包能够"捕获"并"记住"其外部作用域中的变量,即使这个变量的生命 ...
- 【Jenkins】Mac系统之忘记jenkins密码,如何修改密码
参考文章<jenkins管理员密码登录不了> 一.修改config.xml文件 Mac下的文件在 /Users/xxx/.jenkins/users/登录的用户名/config.xml 复 ...
- 微信小程序开发工具怎样支持xdebug调试
在做PHP项目时候用xdebug进行调试,如果使用浏览器我一般直接 Xdebug Helper 浏览器插件.配合PHPSTORM进行调试. 微信小程序并不支持cookies,因此需要另想办法,可以在微 ...
- 报错解决:partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most likely due to a circular import)
在运行jupyter 时候报错'partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most ...
- css实现中括号边框
要求:css + div 实现中括号边框 一.实现方式 .square_brackets { border: none; position: relative; padding: 0; height: ...
- 前端解决Long类型精度丢失的问题
问题 数据库数据: 前端得到的数据: 出现了Long类型的数据出现精度丢失问题! 原因 JS中Long最大值:9007199254740992 JAVA中Long最大值:922337203685477 ...
- WPF 实现一个吃豆豆的Loading加载动画
运行的效果如下 先引入一下我们需要的库 在nuget上面搜一下"expression.Drawing",安装一下这个包 我们再创建一个Window,引入一下这个包的命名空间 我们设 ...