2次多项式回归的最佳拟合线

use*_*465 3 numpy matplotlib

我正在尝试使用2度的numpy中的polyfit函数在2点x和y之间创建最佳拟合线.

fit = polyfit(x, y, 2)
fit_fn = poly1d(fit)

plot(x, y, 'k.', x, fit_fn(x), '--r', linewidth=1)
plt.xlabel("x")
plt.ylabel("y")
Run Code Online (Sandbox Code Playgroud)

我有点困惑为什么最合适的线条如此厚实而不是简单的线条.你在代码中做错了吗?

适合胖线

she*_*idp 7

问题是你x没有排序.尝试

plot(x, y, 'k.', sort(x), fit_fn(sort(x)), '--r', linewidth=1)
Run Code Online (Sandbox Code Playgroud)

情节从"连接点" (x_0, fit_fn(x_0))(x_1, fit_fn(x_1)).如果你x没有排序,那么这条线在整个地方都是锯齿形,使它看起来很厚.

  • 如果`x`非常大,你浪费时间将它排序两次,我会说'xs = np.sort(x)`然后`plot(x,y,'k.',xs,fit_fn(xs), ...)` (2认同)