嗨,我正在为类和线性回归编写一些代码。
对于您在代码中可以看到的数据,手工计算得出的值为a = 1.7和b = 1.6。
我尝试将公式的不同部分分成不同的变量,但答案仍然相同(1.6999999999999993)。
import numpy as np
x=np.array([2,3,5,6])
y=np.array([4.5,7.2,9.2,11.5])
b=(np.sum((y-np.mean(y))*x))/(np.sum((x-np.mean(x))*x))
a=np.mean(y)-(b*(np.mean(x)))
print(a)
print(b)
预期结果为a = 1.7和b = 1.6,但输出为a = 1.6999999999999993。
答案 0 :(得分:0)
这是因为您使用的是:02.2f
数字,所以二进制浮点运算就是这样。在大多数编程语言中,它基于IEEE 754 standard。
答案 1 :(得分:0)
但是如果您希望结果以'a = 1.7'的形式出现。那你可以试试看。
import numpy as np
x=np.array([2,3,5,6])
y=np.array([4.5,7.2,9.2,11.5])
b=(np.sum((y-np.mean(y))*x))/(np.sum((x-np.mean(x))*x))
a=np.mean(y)-(b*(np.mean(x)))
a = "%.1f"% (a)
print(a)
print(b)