如何在python中找到曲线的拐点?

2024-05-13 23:00:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一种方法来找到曲线的拐点,给定一组点,并找到python包kneed,它似乎是完成工作的正确工具。这里曲线的“拐点”,我指的是曲线中斜率急剧上升的点。我专门寻找发生这种情况的x轴上的值。虽然我在解释我的结果时遇到了一些困难,因为它们似乎不是我所期望的

下面是我试图从中学习的文档:https://kneed.readthedocs.io/en/stable/parameters.html

以下是我尝试过的代码:

x = np.array([30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720, 750])
y = np.array([1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,15,15,15,16,16,])
kneedle = KneeLocator(x, y, curve="convex", direction="increasing")
kneedle.knee

从这段代码中,我创建了具有x轴值和y轴值的数据。只要观察数据,我们就可以看到y值的最大“跳跃”是从2到15,在x轴上的600到630处。如数据所示,曲线是凸的,数据在增加。我可以想象,这个代码将产生600或630作为膝盖。相反,此代码生成750作为膝部,这肯定不是曲线的膝部

在生成正确的膝部值时,哪里可能出错?我将使用python


Tags: 工具数据方法代码文档np情况array
1条回答
网友
1楼 · 发布于 2024-05-13 23:00:13

我不知道有多少,但问题是你的数据不是凸的?如果您将y更改为

y = np.array([1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,15,150,1510,16000,160000,])

所以它真的是凸的

相关问题 更多 >