我正在解决一个问题,该问题涉及计算适合散点图边缘的曲线方程,如下所示。这是一个明确定义的边缘,但是我需要精确的配合。
我最初尝试基于此脚本...
Fit a curve to the boundary of a scatterplot
...但是我对Python不够熟悉,无法通过阅读了解这段代码的构成,并且无法完全适应我的情况。
这就是我从该示例中尝试过的内容。此处的目标是将曲线建模为具有极限的指数增长,然后将曲线向下逐渐移向点。但是,这和scipy.optimize curve_fit似乎都无法为我提供精确拟合。
from math import e
model = lambda x, a, b: (a * (1 - (e ** (-b * x)))
def get_flipped(y_data, y_model):
flipped = y_model - y_data
flipped[flipped > 0] = 0
return flipped
def flipped_resid(pars, x, y):
y_model = model(x, *pars)
flipped = get_flipped(y, y_model)
resid = np.square(y + flipped - y_model)
return np.nan_to_num(resid)
from scipy.optimize import leastsq
guesses =[100, 5]
fit_pars, flag = leastsq(func = flipped_resid, x0 = guesses,
args = (x_data, y_data))
我对Python(R本机)比较陌生,因此这里可能存在一些明显的错误,但是如何改善贴合度以使线条恰好位于边缘?