我想把一个函数拟合到一个3D数据上。我用pandas读取数据:
df = pd.read_csv('data.csv')
Ca = df.Ca
q = df.q
L = df.L0
字符串
然后,我将3d函数(z=f(x,y))定义为:
def func(q, Ca, l0, v0, beta):
return l0 + q*v0*(1+beta/(q*Ca))
型
然后我使用curve_fit来找到最佳拟合参数:
from scipy.optimize import curve_fit
guess = (1,1,1)
popt, pcov = curve_fit(func, q,Ca,L, guess)
型
它给了我以下错误:
ValueError: `sigma` has incorrect shape.
型
你知道什么是错误和如何解决它吗?非常感谢你的帮助
2条答案
按热度按时间2nbm6dog1#
这是一个图形化的3D拟合与3D散点图,3D表面图,和3D轮廓图。
字符串
xa9qqrwz2#
我不确定你的Model-func的正确性,我确定你传递参数的方式不正确。从James菲利普斯的代码中得到空图,只需绘制他的Model-func以适应他的数据
字符串
x1c 0d1x的数据
但请始终注意fit中
pcov
的条件号-np.linalg.cond(pcov)
-参见docs较大的值会引起关注。与拟合的不确定性相关的协方差矩阵的对角元素提供了更多信息:np.diag(pcov)阵列([1.48814742e+29,3.78596560e-02,5.39253738e-03,2.76417220e+28])#可以变化-例如注意,第一项和最后一项比其他元素大得多,这表明这些参数的最佳值是模糊的,并且在模型中仅需要这些参数中的一个。
或使用/变更缩放
P.S. ref. curve_fit