我试图绘制一些简单的数据并显示多项式回归线,似乎我根据docs
做了一切正确的事情poly=np.poly1d(np.polyfit(x,y,20))
plt.scatter(x,y)
plt.plot(x, poly(x))
答案 0 :(得分:0)
Matplotlib的plot
方法按照您提供的顺序连接您提供的(x,poly(x))点。您的数组x似乎未排序,这使得绘图左右多次左右。在绘图之前对其进行排序,例如:
x = np.array([1,7,2,6,3,5,4])
y = np.array([1,3,2,4,3,5,4])
poly=np.poly1d(np.polyfit(x, y, 2))
plt.scatter(x,y)
sorted = np.sort(x)
plt.plot(sorted, poly(sorted))
plt.show()
通常这不会出现,因为一个人绘制的拟合模型不是针对点(可以制作上面显示的粗略图)而是针对一些更精细的linspace
绘制,这样可以创建更平滑的图。然后排序不是问题。
xx = np.linspace(x.min(), x.max(), 500)
plt.plot(xx, poly(xx))
plt.show()