Python使用分段函数拟合数据

Python使用分段函数拟合数据

  • 前言
  • 前提条件
  • 相关介绍
  • 实验环境
  • 使用分段函数拟合数据
    • 代码实现
    • 输出结果

在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • YOLOv8 Ultralytics:使用Ultralytics框架训练RT-DETR实时目标检测模型
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

前提条件

  • 熟悉Python

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • PyTorch 是一个深度学习框架,封装好了很多网络和深度学习相关的工具方便我们调用,而不用我们一个个去单独写了。它分为 CPU 和 GPU 版本,其他框架还有 TensorFlow、Caffe 等。PyTorch 是由 Facebook 人工智能研究院(FAIR)基于 Torch 推出的,它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的 GPU 加速的张量计算(如 NumPy);2、构建深度神经网络时的自动微分机制。
  • NumPy(Numerical Python的缩写)是Python语言的一个数值计算库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的诞生极大地提升了Python进行科学计算的效率,它提供的多维数组对象和丰富的数学函数库,使得Python可以轻松地进行科学计算和数据分析。
  • NumPy的特点包括:
    • 强大的多维数组对象:NumPy提供了一个高效的多维数组对象,可以进行快速的数据处理和计算。
    • 高效的内存管理:NumPy使用高效的内存管理,可以处理大规模的数据,并最大限度地提高了内存使用效率。
    • 数学函数库:NumPy提供了大量的数学函数库,可以进行各种数学运算和数据处理。
    • 广播机制:NumPy的广播机制使得在处理不同形状的数组时能够自动地进行广播,无需编写额外的循环代码。
    • 支持GPU加速:NumPy支持GPU加速,可以充分利用GPU的计算能力进行大规模的数据处理和计算。
  • 总之,NumPy是Python中进行科学计算和数据分析的重要工具,它提供了高效的多维数组对象和丰富的数学函数库,使得Python可以进行大规模的数据处理和高性能的科学计算。
  • Matplotlib是一个用于创建交互式图形的Python库。它可用于创建各种类型的图形,包括折线图、散点图、柱状图、等高线图、3D图等。Matplotlib的目标是以一种简单而直观的方式创建图形,同时保持对底层图形API的完全控制。这使得Matplotlib非常适合于数据可视化、统计、机器学习等领域。
  • Matplotlib的主要特点包括:
    • 简单易用:Matplotlib的API接口简单直观,易于学习和使用。它提供了丰富的示例代码和文档,使得用户可以快速上手。
    • 高度可定制:Matplotlib的图形是通过一组配置参数来定义的,用户可以根据需要调整图形的样式和布局。此外,Matplotlib还提供了大量的自定义功能,如标签、图例、颜色条等。
    • 支持多种输出格式:Matplotlib支持将图形输出为各种格式,包括PNG、JPEG、SVG、PDF等。这使得用户可以将图形导出为多种媒体格式,并进行交互式展示。
    • 支持实时更新:Matplotlib支持实时更新图形,使得用户可以在运行时动态地更新数据和图形。
    • 支持交互式操作:Matplotlib支持对图形进行交互式操作,如放大、缩小、平移等。这使得用户可以更方便地观察和分析数据。
  • 总之,Matplotlib是一个功能强大的Python图形库,适用于各种类型的数据可视化任务。它简单易用、高度可定制、支持多种输出格式和交互式操作,是Python开发人员常用的数据可视化工具之一。
  • 分段函数是一个数学函数,它在一个区间内可能有不同的表达式。具体来说,分段函数是由一些不连续的线段和常数函数组成的函数。这些线段通常在定义域内不相交,并且在每个线段上,函数的行为都由一个常数函数描述。
  • 分段函数的优点包括:
    • 简化复杂函数关系:分段函数可以将复杂的函数关系拆分成多个简单的部分,使得函数的定义更加清晰和易于理解。
    • 灵活性:分段函数可以根据不同的条件选择不同的算法或表达式来计算函数值,从而使得函数的计算更加灵活和准确。
  • 分段函数的缺点包括:
    • 可读性较差:由于分段函数由多个简单的部分组成,因此可能难以理解其整体行为。
    • 需要更多的维护:与单一的函数相比,分段函数需要更多的维护和更新。
  • 分段函数的特性包括:
    • 分段连续性:在分段函数中,对于任意两个区间,该函数都是连续的。
    • 分段可导性:在分段函数中,可以对每个单独的区间求导,以求出其斜率。
    • 极值特性:在分段函数中,可以找到函数的极大值和极小值,但其极值不一定在函数的每个区间中。
  • 以下是一个分段函数的例子:
    f ( x ) = { 2 x − 1 : x ≤ 3 x 2 − 4 : x > 3 f(x) = \left\{ \begin{array}{lr} 2x - 1 & : x \leq 3 \\ x^2 - 4 & : x > 3 \end{array} \right. f(x)={2x1x24:x3:x>3
  • 这个函数在 x ≤ 3 x \leq 3 x3 的区间内是线性的,而在 x > 3 x > 3 x>3 的区间内是非线性的。分段函数通常用于描述具有不同特征和行为的系统,如控制系统、信号处理等.

实验环境

  • Python 3.x (面向对象的高级语言)

使用分段函数拟合数据

  • 背景:将随机生成的数据,用分段函数拟合。这种方法,在某些场景下,既简单又好用

在这里插入图片描述

代码实现

import numpy as np  
import matplotlib.pyplot as plt  # 获取区间范围的索引值
def get_x_index_in_interval(x,Intervals):for i,(a,b) in enumerate(Intervals):if a < x <= b:return ireturn 0# 直线函数
def y_func(x, k, b):y = k*x+breturn y# 求每个分段区间的函数斜率k和截距b
def line_equation(x1, y1, x2, y2):  # 计算斜率  k = (y2 - y1) / (x2 - x1)  # 计算截距  b = y1 - k * x1  return k, bif __name__=="__main__":# # 创建数据点  # x = np.array([0, 100, 200, 300, 400, 500])  # y = np.array([0.0, 5.00, 12.00, 15.00, 20.00, 26.00])# 创建10个递增的随机数,输入值x = np.random.rand(10) * 100  # 在0到100之间生成随机数 x = np.sort(x)  # 对x进行排序,使其成为递增序列  # 随机生成10个数据点对应的y值,实际值y = np.random.rand(10) * 100y = np.sort(y)  # 对y进行排序,使其成为递增序列# # 使用matplotlib来绘制数据点和拟合的分段直线  # plt.scatter(x, y, color='blue', label='Data Points')  # 绘制数据点  # # plt.plot(x, y_pre, color='red', label='Fitted Piecewise Line')  # 绘制拟合直线  # plt.title('Piecewise Linear Regression')  # 添加标题  # plt.xlabel('X')  # 添加x轴标签  # plt.ylabel('Y')  # 添加y轴标签  # plt.legend()  # 添加图例  # plt.show()  # 显示图表  # 对应的分段系数 k_b = [(line_equation(x[i],y[i],x[i+1],y[i+1])) for i in range(len(x)-1)]# print(k_b)# 对应的分段区间Intervals = [(x[i],x[i+1]) for i in range(len(y)-1)]# print(Intervals)# 预测结果y_pre = []for x_value in x:index = get_x_index_in_interval(x_value,Intervals)# print(x_value,k_b[index])y_pre.append(y_func(x_value,k_b[index][0],k_b[index][1]))# print(y_pre)# 使用matplotlib来绘制数据点和拟合的分段直线  plt.scatter(x, y, color='blue', label='Data Points')  # 绘制数据点  plt.plot(x, y_pre, color='red', label='Fitted Piecewise Line')  # 绘制拟合直线  plt.title('Piecewise Linear Regression')  # 添加标题  plt.xlabel('X')  # 添加x轴标签  plt.ylabel('Y')  # 添加y轴标签  plt.legend()  # 添加图例  plt.show()  # 显示图表

输出结果

在这里插入图片描述

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • YOLOv8 Ultralytics:使用Ultralytics框架训练RT-DETR实时目标检测模型
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

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

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

相关文章

1,使用IDLE开启我们第一个Python程序

前面我们已经安装好了Python&#xff0c;安装了Python后&#xff0c;他会自动帮我们安装一个IDLE。IDLE是一个Python自带的非常简洁的集成开发环境&#xff08;IDE&#xff09;。他是一个Python Shell&#xff0c;我们可以利用Python Shell与Python交互。下面我们就利用IDLE开发…

【数据结构第 6 章 ②】- 用 C 语言实现邻接矩阵

目录 一、邻接矩阵表示法 二、AMGraph.h 三、AMGraph.c 四、Test.c 【数据结构第 6 章 ① 】- 图的定义和基本术语-CSDN博客 由于图的结构比较复杂&#xff0c;任意两个顶点之间都可能存在联系&#xff0c;因此无法以数据元素在存储区中的物理位置来表示元素之间的关系&…

anolisos8.8安装显卡+CUDA工具+容器运行时支持(containerd/docker)+k8s部署GPU插件

anolisos8.8安装显卡及cuda工具 一、目录 1、测试环境 2、安装显卡驱动 3、安装cuda工具 4、配置容器运行时 5、K8S集群安装nvidia插件 二、测试环境 操作系统&#xff1a;Anolis OS 8.8 内核版本&#xff1a;5.10.134-13.an8.x86_64 显卡安装版本&#xff1a;525.147.05 c…

el-tree搜索的使用

2023.12.11今天我学习了如何对el-tree进行搜索的功能&#xff0c;效果如下&#xff1a; <template><div class"head-container"><el-inputv-model"roleName"clearableplaceholder"请输入角色/用户名称"prefix-icon"el-icon-…

linux搭建seata并使用

搭建seata 官网 在linux下搭建 下载1.6.1版本&#xff1a;地址 新建文件夹、上传压缩包并解压 [roothao ~]# cd /usr/local/software/ [roothao /usr/local/software]# ls canal docker elk gitlab jdk mysql nacos nexus nginx rabbitmq redis redis_sentinel…

[IDEA] 写代码时没有类型推断的解决方法

本示例使用scala, 其他语言同理 使用 .var 时会自动生成变量 使用快捷键 CtrlAtlv 一样 val abc "abc"但是这个变量没有显式表现类型 期望 val abc: String "abc" 解决方法

[Unity]关于Unity接入Appsflyer并且打点支付

首先需要去官方下载Appsflyer的UnityPackage 链接在这afPackage 然后导入 导入完成 引入此段代码 using AppsFlyerSDK; using System.Collections; using System.Collections.Generic; using UnityEngine;public class AppflysManager : MonoBehaviour {public static App…

高效利用内存资源之动态内存管理详解

目录 一、为什么存在动态内存分配 二、动态内存函数的介绍 2.1malloc 2.2free 2.3calloc 2.4realloc 三、常见的动态内存错误 3.1对NULL指针的解引用操作 3.2对动态开辟空间的越界访问 3.3对非动态开辟内存使用free释放 3.4使用free释放一块动态开辟内存的一部分 3.…

UE4/UE5 修改/还原场景所有Actor的材质

使用蓝图方法&#xff1a; 1.修改场景所有Actor 材质&#xff1a; Wirframe&#xff1a;一个材质类 MatList&#xff1a;获取到的所有模型的全部材质 的列表 TempAllClass&#xff1a;场景中所有获取的 Actor 的列表 功能方法如下&#xff1a; 蓝图代码可复制在&#xff1a…

adb命令学习记录

1、 adb ( android debug bridge)安卓调试桥&#xff0c;用于完成电脑和手机之间的通信控制。 xcode来完成对于ios设备的操控&#xff0c;前提是有个mac电脑。 安卓系统是基于linux内核来进行开发的。 2、adb的安装: 本身 adb是 android SDK 其中自带的工具&#xff0c;用于完…

web Speech Synthesis 文字语音播报,Audio 播放base64提示音

SpeechSynthesisUtterance基本介绍 SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等 SpeechSynthesisUtterance基本属性 SpeechSynthesisUtterance.lang 获取并设置话语的语言SpeechSynthesisU…

打包CSS

接上一个打包HTML继续进行CSS的打包 1.在之前的文件夹里的src文件夹创建一个css文件 2.在浏览器打开webpack——>中文文档——>指南——>管理资源——>加载CSS 3.复制第一句代码到终端 4.复制下图代码到webpack.config.js脚本的plugins&#xff1a;[.....]内容下…