R2 的计算
Calculation of R2
我尝试用这些值找到决定系数 (R2):
valeur_T= [45, 77, 102]
valeur_min = [55, 80, 105]
我尝试计算 R2,但我总是找到相同的结果
P2 = polyfit(valeur_T,valeur_min, 2)
p= poly1d(P2)
yhat = p(valeur_T)
ybar = sum(valeur_min)/len(valeur_min)
SST = sum((valeur_min - ybar)**2)
SSreg = sum((yhat - ybar)**2)
R2 = SSreg/SST
SST 和 SSreg 始终具有相同的值且 R2=1
我的错误在哪里?
您正在通过 3 个点拟合二阶多项式,因此您自然会得到完美拟合 (R2=1)。您的其他错误似乎源于您使用常规 Python 列表而不是支持矢量化操作的 NumPy 数组,例如您要在此处执行的操作:
SST = sum((valeur_min - ybar)**2)
添加一个额外的数据点并修改您的代码以在整个过程中支持 NumPy,
import numpy as np
valeur_T= np.array([45., 77, 102, 110])
valeur_min = np.array([55., 80, 105, 122.])
P2 = np.polyfit(valeur_T,valeur_min, 2)
p= np.poly1d(P2)
yhat = p(valeur_T)
ybar = sum(valeur_min)/len(valeur_min)
SST = sum((valeur_min - ybar)**2)
SSreg = sum((yhat - ybar)**2)
R2 = SSreg/SST
print R2
给予
0.993316215465
当然,只有您能说出此改编代码是否适合您的用例。
我尝试用这些值找到决定系数 (R2): valeur_T= [45, 77, 102]
valeur_min = [55, 80, 105]
我尝试计算 R2,但我总是找到相同的结果
P2 = polyfit(valeur_T,valeur_min, 2)
p= poly1d(P2)
yhat = p(valeur_T)
ybar = sum(valeur_min)/len(valeur_min)
SST = sum((valeur_min - ybar)**2)
SSreg = sum((yhat - ybar)**2)
R2 = SSreg/SST
SST 和 SSreg 始终具有相同的值且 R2=1
我的错误在哪里?
您正在通过 3 个点拟合二阶多项式,因此您自然会得到完美拟合 (R2=1)。您的其他错误似乎源于您使用常规 Python 列表而不是支持矢量化操作的 NumPy 数组,例如您要在此处执行的操作:
SST = sum((valeur_min - ybar)**2)
添加一个额外的数据点并修改您的代码以在整个过程中支持 NumPy,
import numpy as np
valeur_T= np.array([45., 77, 102, 110])
valeur_min = np.array([55., 80, 105, 122.])
P2 = np.polyfit(valeur_T,valeur_min, 2)
p= np.poly1d(P2)
yhat = p(valeur_T)
ybar = sum(valeur_min)/len(valeur_min)
SST = sum((valeur_min - ybar)**2)
SSreg = sum((yhat - ybar)**2)
R2 = SSreg/SST
print R2
给予
0.993316215465
当然,只有您能说出此改编代码是否适合您的用例。