我正在尝试将单调曲线拟合到一些几乎单调的数据。(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 个单独的排序约束并使用约束优化函数。)如果最佳解决方案仅在那种语言。
(注意,我确实拟合了 X 值,而不是 Y 值 - 这是因为我最终想要绘制 dX/dY 曲线,并且不会像我从原始数据中绘制它那样放大到荒谬的值。但是,如果在固定 X 值上拟合 Y 值要容易得多,我可以这样做。)