微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scipy curve_fit没有优化三个参数之一

如何解决Scipy curve_fit没有优化三个参数之一

我正在尝试使用scipy curve_fit适合我的实验数据。目标函数的推导方式是前两个参数对我的研究很重要。由于曲线需要平移,因此添加了第三个参数。由于某些原因,scipy根本没有更改该参数。玩完之后,我知道我希望第三个(K_shift)参数在300左右。

def objective_function(x,k_in,k_out,k_shift):
    k_shift = int(k_shift)
    aifVec[:k_shift] = 0
    C = []
    for i in range(len(x)):
        part = np.trapz(aifVec[0:i]* np.exp(-k_out * (timeTumor[i] - timeTumor[0:i])))
        C.append(k_in * part)
    C = np.array(C)
    return C

# optimizing k_in and k_out and k_shift
inital_guess = np.asarray([0.01,0.01,300.0])
fit = curve_fit(objective_function,timeTumor,tumorVec,p0=inital_guess)
ans,cov = fit
fit_tumorY = objective_function(timeTumor,ans[0],ans[1],ans[2])
plt.figure()
plt.plot(tumor_x,tumor_y,'o',fit_tumorY,'-')
plt.legend(['tumor','fit'],loc='best')
rSqTumor = r2_score(tumorVec,fit_tumorY)
plt.figtext(0.5,.35,"R-squared: %.4f" % rSqTumor,fontweight='bold')
plt.figtext(0.5,.3,"k_shift: %.4f" % ans[2],.25,"k_in: %.4f" % ans[0],.2,"k_out: %.4f" % ans[1],fontweight='bold')

请帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。