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])
すべてのポイントの下にある最適なラインの係数を取得するにはどうすればよいですか?