这篇文章主要介绍“Python如何实现曲线的肘部点检测”,在日常操作中,相信很多人在Python如何实现曲线的肘部点检测问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何实现曲线的肘部点检测”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
**肘形曲线(elbow curve)**类似人胳膊状的曲线,拐点在肘部。**膝形曲线(knee curve)人腿形的曲线,拐点在膝盖。这类曲线和二八原则(即帕托累法则)**不谋而合,做决策时,自然选择肘点或膝点做参考。按照拐点在左还是右侧来分,细分为:左膝点曲线,右膝点曲线,左肘点曲线,右肘点曲线。
曲线示意图如下:
左膝点曲线膝点在左边的曲线(术语是我自己起的,明白意思就好,膝点在左边)如下:
从形状上,四种曲线没有大的区别,可以相互转化:
肘曲线与膝曲线相互转化,用曲线最大值减去曲线各点值即可。同类型曲线,左右拐点转化,就是切换升序降序排序即可。
它们都可以计算拐点,其中以左膝点曲线(见下图)计算拐点最简单,所以以其为标准曲线。
左膝点曲线,原理是其二次曲线导数最大点,如下:
对于离散序列来说,当x轴差为1时,二次曲线计算公式为:
f′′(xi)=f(xi−1)+f(xi+1)−2*f(xi)
支持: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, KneeLocator x, 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.222 print(round(kneedle.elbow, 3)) # out: 0.222
到此,关于“Python如何实现曲线的肘部点检测”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。