【发布时间】:2021-10-04 12:31:21
【问题描述】:
我面临以下问题。
我有这些数据:
x = np.array([ 1.00E-03, 1.00E-04, 1.00E-05, 1.00E-06 ])
y = np.array([ 0.01, 0.002469136, 0.000771605, 0.000257202 ])
我想对这个数据进行幂律拟合并得到回归系数。
但是,我在 WPS office 和 scipy 之间得到了不同的结果。
我的代码如下:
import numpy as np
from scipy.optimize import curve_fit
from sklearn.metrics import r2_score
xdata = x
ydata = y
# Power Law function
def f(x,a,b):
return (a*(x**b))
popt, pcov = curve_fit(f, xdata, ydata)
r_squared = r2_score(ydata, f(xdata, popt[0], popt[1]))
在 WPS 办公室我得到 R² = 0.9968
在 scipy 中,我得到 R² = 0.9995。
关于为什么会发生这种情况的任何解释?即使使用可能的不同算法,它们也应该收敛到相似的解决方案,不是吗?
最好的问候!
【问题讨论】: