我有一组x,y点,并希望使用SciPy找到最佳拟合直线,使该直线在所有点下面。我正在尝试使用leastsq实现这个目标,但我不确定如何将直线调整为低于所有点而不是最佳拟合直线。可以通过以下方式生成最佳拟合直线的系数:
def linreg(x, y):
fit = lambda params, x: params[0] * x - params[1]
err = lambda p, x, y: (y - fit(p, x))**2
# initial slope/intercept
init_p = np.array((1, 0))
p, _ = leastsq(err, init_p.copy(), args=(x, y))
return p
xs = sp.array([1, 2, 3, 4, 5])
ys = sp.array([10, 20, 30, 40, 50])
print linreg(xs, ys)
输出的结果是最佳拟合直线的系数:
array([ 9.99999997e+00, -1.68071668e-15])
我该如何获取最佳拟合线的系数,使其位于所有点的下方?