Python代码输出正常直到计算

时间:2018-03-29 23:31:35

标签: python

所以,我有一组数据点可以进行线性回归,大多数大计算都可以顺利进行。

from __future__ import division
data = [[0.0,0.0], [1.0,2.0], [2.0,4.0]]

#regression model
n = float(len(data))
sumx = 0.0
sumy = 0.0
sumxsquared = 0.0
sumxy = 0.0
rcoeff = 0.0
m = 0.0

print (n)

i=0

while (i < n):
  sumx += data[i][0]
  sumxsquared += (data[i][0])**2.0
  sumxy += data[i][0]*data[i][1]
  sumy += data[i][1]
  i += 1

print ("total x: " + str(sumx))
print ("total y: " + str(sumy))
print ("total xy: " + str(sumxy))
print ("total x squared: " + str(sumxsquared))

但是,在我添加以下代码后,我的&#39; m&#39;读零

m = ((sumy*sumxsquared-sumx*sumxy)/((n*sumxsquared)-sumx**2.0))

print ("m:" + str(m))

我正在努力寻找原因,我可以请一些帮助吗?

2 个答案:

答案 0 :(得分:0)

表达式的分子

((sumy*sumxsquared-sumx*sumxy)/((n*sumxsquared)-sumx**2.0))

6*5 - 3*10,即30 - 30或零,所以当然整个分数的评估结果为零。

请注意,您的数据由直线((0,0)(1,2)(2,4))中的三个点组成,此外该行还有原点,所以很多基于这些点的统计数据将为零。

答案 1 :(得分:0)

您将0除以6,即0:

a=(sumy*sumxsquared)
b=(sumx*sumxy)
c=(n*sumxsquared)
d=(sumx**2.0)
print(a)
print(b)
print(c)
print(d)
m = (a-b)/(c-d)   
print ("m:" + str(m))

输出:

30.0
30.0
15.0
9.0
m:0.0