原标题:python散点图:如何添加拟合线并显示拟合方程与R方?

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

numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)

# x:要拟合点的横坐标

# y:要拟合点的纵坐标

# deg:自由度.例如:自由度为2,那么拟合出来的曲线就是二次函数,自由度是3,拟合出来的曲线就是3次函数

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

# 解决坐标轴刻度负号乱码

plt.rcParams['axes.unicode_minus'] = False

# 解决中文乱码问题

plt.rcParams['font.sans-serif'] = ['Simhei']

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+bb

else:

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+bb

else:

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)

责任编辑:

python散点图拟合曲线-python散点图:如何添加拟合线并显示拟合方程与R方?相关推荐

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

    polyfit()函数可以使用最小二乘法将一些点拟合成一条曲线. numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False) ...

  2. R语言编写自定义函数、评估回归模型预测变量的相对重要性(Relative importance)、通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加、评估预测变量的重要度、并通过点图可视化

    R语言编写自定义函数.评估回归模型预测变量的相对重要性(Relative importance).通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加.来评估预测变量的重要程度.并通过点图可 ...

  3. python散点图拟合曲线-python散点图拟合

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 下面是我在文本文件中绘制数据散点图的代码. 我打开的文件包含两列. 左列为x坐标 ...

  4. python散点图拟合曲线-Python解决最小二乘法拟合并绘制散点图

    问题背景 最近物理老师让用Excel弄一个最小二乘法拟合然后弄出方程来求玻尔兹曼常数.无奈发现Linux上的WPS没有绘图功能无语啊O__O"-,据说绘图功能是用delphi写的,不好做跨平 ...

  5. python散点图拟合曲线-python 绘制拟合曲线并加指定点标识的实现

    python 绘制拟合曲线并加指定点标识 import os import numpy as np from scipy import log from scipy.optimize import c ...

  6. python散点图拟合曲线-python 拟合曲线并求参

    需要对数据进行函数拟合,首先画一下二维散点图,目测一下大概的分布, 所谓正态分布,就是高斯分布,正态曲线是一种特殊的高斯曲线. python的scipy.optimize包里的curve_fit函数来 ...

  7. python散点图拟合曲线-python – 将曲线拟合到散点图的边界

    我发现问题真的很有趣,所以我决定尝试一下.我不知道pythonic或natural,但我认为我已经找到了一种更准确的方法,可以在使用每个点的信息时将边缘拟合到像您这样的数据集. 首先,让我们生成一个看 ...

  8. python散点图拟合曲线-python曲线拟合

    http://blog.sina.com.cn/s/blog_aed5bd1d0102vid7.html 1.多项式拟合范例: import matplotlib.pyplot as plt impo ...

  9. python散点图拟合曲线-python中的多元(多项式)最佳拟合曲线?

    Tyson 对this question的公认回答 提供了 您只需将x和y点的数组以及所需的拟合度(顺序)传递到multipolyfit.这将返回系数,然后可以使用numpy的polyval绘制. 注 ...

最新文章

  1. 详解MySQL字符串函数CONCAT()、CONCAT_WS()、INSERT()、REPLACE()、LOWER()、UPPER()用法(二)
  2. mysql 64位 安装1045_MySql 安装时的1045错误
  3. mysql 回滚之后抛出异常_在PHP中 开始事务后,程序抛出异常 没有执行commit也没有执行rollback mysql事务会回滚吗?...
  4. jqGrid编辑—公共规则【附视频、ppt、源码】
  5. Spring Boot——开发新一代Spring应用
  6. tomcat中开启SSL
  7. Citrix HDX 3D Pro - 注意事项 - 2017H1
  8. 多元函数泰勒展开与黑塞矩阵
  9. 如何同时将多张图片进行批量无损压缩、调整尺寸及调整大小
  10. java 检测usb_如何从android中检测和打印USB打印机
  11. 2022电大国家开放大学网上形考任务-国学经典选读(山东)非免费(非答案)
  12. com.mysql.jdbc.Connection.isValid(I)Z错误解决办法
  13. [RK3288][Android7.1]调试笔记 --- 内置高版本的APK编译User版本出错解决
  14. 30【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 中国国际疫情实时追踪
  15. 计算机连接未识别的网络,电脑网络连接处出现未识别的网络无Internet访问的解决办法...
  16. MoveIt与RobotStudio
  17. mk突变点检测_MK检验突变分析 matlab
  18. 管理跨国虚拟团队的技巧
  19. FSK、PSK基带信号高阶累积量理论值
  20. Android 在app里面打开另一个app,加<uses-permission android:name=“android.permission.QUERY_ALL_PACKAGES“

热门文章

  1. Java类加载机制:双亲委托模型
  2. quot;正统quot;函数式编程 两个规则
  3. bleve搜索引擎源码分析之索引——mapping真复杂啊
  4. mongodb给我们提供了fsync+lock机制把数据暴力的刷到硬盘上
  5. 关于拓扑排序的进一步说明
  6. 蓝桥杯--2013--黄金连分数(大数)
  7. 正则学习(2)--- 简单匹配原理
  8. a+b 第一个JAVA
  9. nginx强制使用https访问(多站点多域名配置)
  10. scrapy-redis源码抛析