下面是我的散点图,其回归线性。只是通过观察标记在图上的分布情况,我觉得线性并没有正确地覆盖它们。从我所看到的,它应该更多的是对角线和更直线而不是曲线。这是我制作情节的代码:
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
我能正确解读吗?我错过了什么?
答案 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)
根据您的展示,我说问题是在对数日志图中,散点图看起来或多或少像一条线。
问题在于您是否符合自然值,然后在对数图中绘图。