python散点图中如何添加拟合线并显示拟合方程与R方?

article/2025/10/1 1:05:56

polyfit()函数可以使用最小二乘法将一些点拟合成一条曲线.

numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
# x:要拟合点的横坐标
# y:要拟合点的纵坐标
# deg:自由度.例如:自由度为2,那么拟合出来的曲线就是二次函数,自由度是3,拟合出来的曲线就是3次函数

首先我们先来构造一下需要被拟合的散点

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-1, 1, 0.02)
y = 2 * np.sin(x * 2.3) + np.random.rand(len(x))

然后打印一下看看

plt.scatter(x, y)
plt.show()

在这里插入图片描述

然后用polyfit函数来把这些点拟合成一条3次曲线

parameter = np.polyfit(x, y, 3)

输出的结果为3次方程的参数,我们可以像下面这样把方程拼接出来

y2 = parameter[0] * x ** 3 + parameter[1] * x ** 2 + parameter[2] * x + parameter[3]

将拟合后的结果打印一下

plt.scatter(x, y)
plt.plot(x, y2, color='g')
plt.show()

在这里插入图片描述

还可以使用poly1d()函数帮我们拼接方程,结果是一样的

p = np.poly1d(parameter)
plt.scatter(x, y)
plt.plot(x, p(x), color='g')
plt.show()

在这里插入图片描述

评估指标R方

二维散点进行任意函数的最小二乘拟合在这里插入图片描述
最小二乘中相关系数与R方的关系推导
在这里插入图片描述
其中,

在这里插入图片描述
利用相关系数矩阵计算R方

correlation = np.corrcoef(y, y2)[0,1]  #相关系数
correlation**2   #R方

先来看下poly1d函数自带的输出结果

p = np.poly1d(parameter,variable='x')
print(p)

输出为
在这里插入图片描述
这里是把结果输出到两行里了,但是输出到两行是非常不方便的

尝试下自己编写函数,使输出到一行里

parameter=[-2.44919641, -0.01856314,  4.12010434,  0.47296566]  #系数
aa=''
deg=3
for i in range(deg+1):bb=round(parameter[i],2)     #bb是i次项系数if bb>=0:if i==0:bb=str(bb)else:bb=' +'+str(bb)else:bb=' '+str(bb)if deg==i:aa=aa+bbelse:aa=aa+bb+'x^'+str(deg-i)
print(aa)

输出为:
在这里插入图片描述

封装成函数

def Curve_Fitting(x,y,deg):parameter = np.polyfit(x, y, deg)    #拟合deg次多项式p = np.poly1d(parameter)             #拟合deg次多项式aa=''                               #方程拼接  ——————————————————for i in range(deg+1): bb=round(parameter[i],2)if bb>0:if i==0:bb=str(bb)else:bb='+'+str(bb)else:bb=str(bb)if deg==i:aa=aa+bbelse:aa=aa+bb+'x^'+str(deg-i)    #方程拼接  ——————————————————plt.scatter(x, y)     #原始数据散点图plt.plot(x, p(x), color='g')  # 画拟合曲线# plt.text(-1,0,aa,fontdict={'size':'10','color':'b'})plt.legend([aa,round(np.corrcoef(y, p(x))[0,1]**2,2)])   #拼接好的方程和R方放到图例plt.show()
#    print('曲线方程为:',aa)
#    print('     r^2为:',round(np.corrcoef(y, p(x))[0,1]**2,2))

利用封装的函数重新画图

Curve_Fitting(x,y,3)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Po3AnfKf.shtml

相关文章

R语言——方差分析

一、方差分析的基本概念 方差分析是在20世纪20年代发展起来的一种统计方法,它是由英国统计学家费希尔在进行实验设计时为解释实验数据而首先引入的。 从形式上看,方差分析是比较多个总体的均值是否相等;但是其本质上是研究变量之间的相互关系…

相关度R方

相关度 这里的相关度使用皮尔逊相关性系数,计算公式为: 皮尔逊相关性系数可以从某个角度用来衡量预测值与实际值的相关性关系。 取值范围为[-1,1],数值为正表示为正相关,为负表示为负相关。绝对值越大表示相关性越强。 使用scip…

一文搞定R语言拟合p值、R方...

R:ggplot2拟合&#xff0c;我推荐geom_smooth绘制拟合和ggpmisc添加统计信息。 几行代码就可以搞定了&#xff0c;对新手非常友好。 线性拟合 library(tidyverse) library(readxl) library(ggplot2) library(ggpmisc)repeat1_rawgrassland <- read_excel("D:/OneDri…

R语言在逻辑回归中求R square R方

并非所有结果/因变量都可以使用线性回归进行合理建模。也许第二种最常见的回归模型是逻辑回归&#xff0c;它适用于二元结果数据。最近我们被客户要求撰写关于逻辑回归的研究报告&#xff0c;包括一些图形和统计输出。如何计算逻辑回归模型的R平方&#xff1f; 相关视频&…

Regression 中的 R方

最近在学习ML,一直看到这R方,明白什么意思,但是不知道怎么算出来的,今天看sklearn文档的时候偶然看到了,记录下 简而言之,他的值表示该系列数据是否适合该Regression 算法, 得分越靠近1越适合. 总结来说就是, 1 减去 ( 所有 ( ( 真实值 减去 预测值 ) 的平方 ) 和 除以 所有 (…

基于MATLAB的R方计算

R方计算原理 什么是R方 R-square是你以后很多数据模型都需要用到的统计量&#xff0c;计量模型什么的&#xff0c;还有回归系数显著性检验&#xff0c;F检验&#xff0c;德斌沃森统计量检验。利用数据拟合一个模型时&#xff0c;模型肯定存在误差&#xff0c;那么回归方程对观…

数据科学 | 如何解释线性回归的R方

R方&#xff0c;即R-Squared&#xff0c;常用来衡量线性回归的拟合度。相关性“r"衡量两个变量间的相关性&#xff0c;相关性接近1表示变量间具有很强的正相关性&#xff0c;接近-1表示变量间具有很强的负相关性&#xff0c;接近0表示变量间没有太多的关系。R方与相关性”…

什么是R方?这6张图会让你终身难忘~

什么是R2 &#xff1f; 在回归模型中&#xff0c;因变量&#xff08;y&#xff09;总的方差&#xff08;信息&#xff09;可以被称作总平方和&#xff08;Total sum of squares&#xff0c;TSS&#xff09;&#xff0c;它由两部分组成[1]&#xff1a; 1. 模型可以解释的那部分信…

贝叶斯相关公式(Bayes)

这里只是记录一下&#xff0c;非常推荐马同学高等数学,文末有原文.点击这里看里面的例一应该是理解贝叶斯公式最好的例子 ,如果你稍微有一些基础&#xff0c;我觉得文末第二个链接中的例一更加适合你 代数推导 1. 贝叶斯公式 是根据条件概率推导的 P(A|B)P(AB)P(B)P(B|A)…

贝叶斯模型及其应用总结

本文参考整理众多资料而成。 http://blog.csdn.net/huaxi1902/article/details/24140061 http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html http://www.ruanyifeng.com/blog/2011/08…

贝叶斯预测模型 (数学原理与推导)

1. 方差的两种计算方法 对于方差计算的一个重要结论&#xff1a; 2. 联合概率分布-条件概率分布 当然&#xff0c;利用联合概率分布也很容易推出边缘概率分布&#xff1b;只需要对其他变量进行全积分即可&#xff01; 条件概率分布直观想象还是有难度的&#xff0c;很多时候我…

朴素贝叶斯算法 — 超详细公式讲解+代码实例

本文收录于Github仓库&#xff0c;欢迎前来 star 呀~ https://github.com/Veal98/cs-wiki在线阅读地址/更好的阅读体验请移步&#xff1a;cswiki.top &#x1f454; 朴素贝叶斯算法 Naive Bayes &#x1f4a1; 思维导图 1. 朴素贝叶斯法概述 朴素贝叶斯法是基于贝叶斯定理与…

贝叶斯定理

贝叶斯定理 通常&#xff0c;事件A在事件B的条件下的概率&#xff0c;与事件B在事件A的条件下的概率是不一样的&#xff1b;然而&#xff0c;这两者是有确定的关系&#xff0c;贝叶斯法则就是这种关系的陈述。 贝叶斯法则又被称为贝叶斯定理、贝叶斯规则&#xff0c;是指概率统…

dbus 学习

和菜鸟一起学linux之DBUS基础学习记录 D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。它是个3层架构的IPC 系统&#xff0c;包括&#xff1a; 1、函数库libdbus &#xff0c;用于两个应用程序互相联系和交互消息。 2、一个基于libdbus构造…

ubuntu DBUS 收集

ubuntu DBUS 收集 libdbus-1.so.3.19.11 是dbus-1.12.16.tar.gz 包编译出来的 参考文档: https://www.freedesktop.org/wiki/Software/dbus/ https://www.freedesktop.org/wiki/IntroductionToDBus/ https://dbus.freedesktop.org/doc/dbus-tutorial.html https://docs.gtk.…

Linux DBUS服务器端程序

DBus 服务器端接收方式 DBus 服务器端用来接收signal和method调用。从收集的资料中发现&#xff0c;主要有三种接收方式。 一&#xff0c;采用while循环&#xff0c;监听dbus_connection_read_write()函数。有消息到来时在循环内部进行处理。优点是结构简单&#xff0c;处理方…

Linux -dbus总线

下载编译dbus 下载https://dbus.freedesktop.org/releases/dbus/ dbussrc1.14.0-Linux文档类资源-CSDN下载 dbus-1.14.0.tar.xz xz -d dbus-1.14.0.tar.xz tar xvf dbus-1.14.0.tar2.配置编译 ./configure --prefix/data/opensrc/dbus #--prefix/data/opensrc/dbus 指定输…

DBus通讯

linux下进程间通信的方式主要有Pipe(管道)&#xff0c;FIFO(命名管道)&#xff0c;信号&#xff0c;共享内存&#xff0c;消息队列&#xff0c;信号灯等&#xff0c;这些方式各有 各得特点&#xff0c;如管道是linux下命令行中常用的&#xff0c;用于父子进程的通信。但是这些通…

Linux DBUS客户端程序

DBUS客户端程序&#xff0c;发送一个信号&#xff0c;信号携带int型数据。信号的object path为"/test/signal/server"&#xff0c;interface名为 "test.signal.Type"&#xff0c;信号名为"Test"。接收端可以根据这三个属性来判断是否是想接收的信…

四、QtDbus

文章目录 概述一、QtDBus模块Debug备忘单 二、QtDBus类型系统1、QtDBus类型系统简介2、原生类型3、复合类型4、扩展类型系统5、类型系统使用 三、QtDBus常用类1、QDBusMessage2、QDBusConnection3、QDBusInterface4、QDBusReply5、QDBusAbstractAdaptor6、QDBusAbstractInterfa…