当前位置: 首页 > news >正文

Python曲线肘部点检测-膝部点自动检测

文章目录

  • 一. 术语解释
  • 二. 拐点检测

肘部法则是经常使用的法则。很多时候,可以凭人工经验去找最优拐点,但有时需要自动寻找拐点。最近解决了一下这个问题,希望对各位有用。

一. 术语解释

**肘形曲线(elbow curve)**类似人胳膊状的曲线,拐点在肘部。**膝形曲线(knee curve)人腿形的曲线,拐点在膝盖。这类曲线和二八原则(即帕托累法则)**不谋而合,做决策时,自然选择肘点或膝点做参考。按照拐点在左还是右侧来分,细分为:左膝点曲线,右膝点曲线,左肘点曲线,右肘点曲线。
曲线示意图如下:
在这里插入图片描述
在这里插入图片描述
左膝点曲线膝点在左边的曲线(术语是我自己起的,明白意思就好,膝点在左边)如下:
在这里插入图片描述

从形状上,四种曲线没有大的区别,可以相互转化:

  1. 肘曲线与膝曲线相互转化,用曲线最大值减去曲线各点值即可。
  2. 同类型曲线,左右拐点转化,就是切换升序降序排序即可。
    它们都可以计算拐点,其中以左膝点曲线(见下图)计算拐点最简单,所以以其为标准曲线。

二. 拐点检测

左膝点曲线,原理是其二次曲线导数最大点,如下:
对于离散序列来说,当x轴差为1时,二次曲线计算公式为:
f′′(xi)=f(xi−1)+f(xi+1)−2∗f(xi)f''(x_i) = f(x_{i-1}) +f(x_{i+1}) - 2*f(x_i)f′′(xi)=f(xi1)+f(xi+1)2f(xi)
在这里插入图片描述
推荐一个简单的包:kneed Github地址
支持:Python 3.7, 3.8, 3.9, and 3.10. 安装如下:

$ conda install -c conda-forge kneed
# 或者
$ pip install kneed # To install only knee-detection algorithm
$ pip install kneed[plot] # To also install plotting functions for quick 

使用如下:

from kneed import DataGenerator, KneeLocatorx, y = DataGenerator.figure2()print([round(i, 3) for i in x])
print([round(i, 3) for i in y])# out: [0.0, 0.111, 0.222, 0.333, 0.444, 0.556, 0.667, 0.778, 0.889, 1.0]
# out: [-5.0, 0.263, 1.897, 2.692, 3.163, 3.475, 3.696, 3.861, 3.989, 4.091]kneedle = KneeLocator(x, y, S=1.0, curve="concave", direction="increasing")print(round(kneedle.knee, 3))
# out: 0.222print(round(kneedle.elbow, 3))
# out: 0.222
http://www.lryc.cn/news/22406.html

相关文章:

  • 【算法题】最大矩形面积,单调栈解法
  • 活动策划|深度分析年货节活动该如何策划!
  • Idea启动遇到 Web server failed to start. Port 8080 was already in use. 报错
  • Python3中zip()函数知识点总结
  • 过滤器,监听器,拦截器的原理与在Servlet和Spring的应用
  • minio spring boot 秒传、分片上传、断点续传文件实现
  • MTK平台使用Omnipeek分析空口协议讲解
  • string和自动推断类型
  • 【软件测试】从功能到自动化测试,测试人的进阶之路细节,这些必不可少......
  • C语言青蛙跳台阶【图文详解】
  • 笔记(五)——list容器的基础理论知识
  • 浅谈网络中接口幂等性设计问题
  • 《C Primer Plus》第13章复习题与编程练习
  • 计算机SCI论文应该怎么作图? - 易智编译EaseEditing
  • 【一】kubernetes集群部署
  • Docker安装Redis
  • 在shell中执行一条可执行程序(./a.out) 系统执行的过程
  • 【ArcGIS Pro二次开发】(10):属性表字段(field)的修改
  • 数据结构与算法—散列表
  • 计算机网络笔记、面试八股(一)—— TCP/IP网络模型
  • Servlet笔记(18):国际化
  • kibana搭建(windowslinux)
  • (pytorch进阶之路)Informer
  • 关键词聚类和凸现分析-实战1——亚急性甲状腺炎的
  • 二叉树——二叉搜索树中的众数
  • 安装_配置参数解读_集群安装配置_启动选举_搭建启停脚本---大数据之ZooKeeper工作笔记004
  • RTMP的工作原理及优缺点
  • 【数据结构与算法】——第八章:排序
  • 在linux中web服务器的搭建与配置
  • 《Python机器学习》基础代码2