python - 尝试绘制二次回归,得到多条线

标签 python matplotlib

我正在使用 ipython 演示 numpy 中不同类型的回归,到目前为止,我已经能够毫无困难地绘制简单的线性回归。现在,当我继续对数据进行二次拟合并绘制它时,我没有得到二次曲线,而是得到许多线。这是我正在运行的产生问题的代码:

import numpy
from numpy import random
from matplotlib import pyplot as plt
import math

# Generate random data
X = random.random((100,1))
epsilon=random.randn(100,1)
f = 3+5*X+epsilon

# least squares system
A =numpy.array([numpy.ones((100,1)),X,X**2])
A = numpy.squeeze(A)
A = A.T
quadfit = numpy.linalg.solve(numpy.dot(A.transpose(),A),numpy.dot(A.transpose(),f))

# plot the data and the fitted parabola
qdbeta0,qdbeta1,qdbeta2 = quadfit[0][0],quadfit[1][0],quadfit[2][0]
plt.scatter(X,f)
plt.plot(X,qdbeta0+qdbeta1*X+qdbeta2*X**2)
plt.show()

我得到的是这张图片(放大以显示问题): enter image description here

您可以看到,我没有一条适合数据的抛物线,而是有大量单独的线在做一些我不确定的事情。任何帮助将不胜感激。

最佳答案

您的X是随机排序的,因此它不是一组很好的用于绘制连续线的x值,因为它必须自身加倍。我猜你可以对它进行排序,但是说实话,我只是创建一个新的 x 坐标数组并使用它们:

plt.scatter(X,f)
x = np.linspace(0, 1, 1000)
plt.plot(x,qdbeta0+qdbeta1*x+qdbeta2*x**2)

给我 example plot

关于python - 尝试绘制二次回归,得到多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903846/

相关文章:

python - pandas 系列/数据框的对数

python - 查找 NetCDF 中多个经纬度中心的半径内的值

image - 在python中绘制灰度图像直方图的问题

python - 为什么打印的 Inline::Python 函数重定向失败?

python - 如何生成许多列表并为其赋值

python - 在元组中返回装饰器参数和参数

python - 如何使用 std[in/out/err] 以外的文件描述符?

python - TensorLy 中的 Kronecker 产品源代码

python - 在 Python 中制作 x、y、z 数据的热图

python - 将第二个图例添加到散点图