最佳拟合线与散点图不匹配

时间:2017-10-27 11:17:29

标签: python numpy matplotlib plot

下面是我的散点图,其回归线性。只是通过观察标记在图上的分布情况,我觉得线性并没有正确地覆盖它们。从我所看到的,它应该更多的是对角线和更直线而不是曲线。这是我制作情节的代码:

for i in range (len(linkKarmaList)):
    plt.scatter(commentKarmaList[i], linkKarmaList[i], marker="o", s=len(clearModSet[i])*1.0*0.9)
x = numpy.asarray(commentKarmaList)
y = numpy.asarray(linkKarmaList )
plt.plot(numpy.unique(x), numpy.poly1d(numpy.polyfit(x, y, 1))(numpy.unique(x)))
plt.xlabel('Comment Karma ')
plt.ylabel('Link Karma')
plt.title('Link and comment Karma of most popular Forums on reddit')
plt.xscale('log')
plt.yscale('log')
plt.legend()
plt.show

我能正确解读吗?我错过了什么?

enter image description here

2 个答案:

答案 0 :(得分:1)

您正在尝试拟合直线y = a*x + b,它在日志空间中看起来不像是一条直线。相反,你应该在对数空间中绘制一条直线。

这归结为log(y) = a * log(x) + b 然后我们可以将其重写为log(y) = log(x^a) + b 如果我们接着这个的指数,我们发现: y = x^a * 10^b或仅y = C * x^a,其中 C (= 10 ^ b)和 a 是拟合参数, x y 是您的数据。 这是在日志日志空间中创建一条直线的函数,这是您应该尝试根据数据拟合的函数。

答案 1 :(得分:0)

根据您的展示,我说问题是在对数日志图中,散点图看起来或多或少像一条线。

问题在于您是否符合自然值,然后在对数图中绘图。