我正在尝试将单调曲线拟合到一些近乎单调的数据上。 (X值是单调的,Y值应该是单调的,但噪声通常比点之间的基础值变化还要大。)这是我目前在做的事情的摘要:
def goodness_of_fit(Xfit):
assert(is_sorted(Xfit))
# ( Calculate the area between the fit line and the join-the-dots line from the data )
scipy.optimize.minimize(goodness_of_fit, x0=numpy.linspace(xmin, xmax))
我找不到一种方法来使优化算法保持Xfit数组排序 - 有人有什么建议吗?(由于数组的大小过大,创建N-1个单独的排序约束并使用受限制的优化函数变得不可行。)如果最佳方案只能在其他语言中实现,我愿意使用除Python之外的其他语言。
(注意:我确实拟合了X值而不是Y值 - 这是因为我最终想要绘制dX/dY曲线,并且使其不像从原始数据绘制时那样吹气成荒谬的价值。然而,如果固定X值上拟合Y值更容易,我可以选择这样做。)