如何评估python中曲线的平滑度平坦度?

问题描述

我想知道如果有一个可以描述的评分函数或可以与其他评分函数进行比较的曲线的平滑度。

我之前最初使用标准差来评估曲线的平滑度,当曲线在平坦条件下平均时效果很好。但是,如果曲线有一个斜率使它变得更高,它不能给出预期的结果,因为它可能受到最大值或最小值的影响,但我只想考虑平滑度。

这是我的想法的一个例子:

Graph 1

Graph 2

(只见绿线) 第一张图中绿线的分数或比率应该更高,因为它看起来比第二张更平滑。

我正在考虑是否可以使用 Scipy 信令模块或其他东西。如果您有任何想法,请给我评论,这将对我有很大帮助。非常感谢。

解决方法

“平滑度”有很多不同的定义。根据您要查找的内容,您可以使用不同的方法来评估曲线的平滑度。

正如汤姆所建议的,您可以评估导数的标准偏差。

另一种在数学上更准确的方法是评估函数的二阶导数平方的积分。在this answer中查看更多信息。

enter image description here

无论哪种情况,要评估离散数据集的导数,您都可以计算数据集中每两个点之间的斜率。因此它看起来像这样:

from numpy import diff

y_dataset = [...]
x_dataset = [...]
dy_dx = diff(y_dataset)/diff(x_dataset)

from numpy import diff

y_dataset = [...]
dx = n
dy_dx = diff(y_dataset)/dx

希望有所帮助:)