如何解决SciPyoptimize.curve提供了一个拟合函数的两个拟合图
我对使用python很陌生,所以我希望我的问题不会太愚蠢。
我目前正在为一组数据尝试不同的拟合(线性,二次方,三次),最后,我想比较不同的拟合。但是在这样做的同时,在尝试了简单的二次拟合(f(x)= a x ^ 2 + b)之后,我还尝试了二次多项式拟合(f(x)= a x ^ 2 + b * x + c),但随后的结果却给了我两个而不是一个二次拟合(线性拟合总共3个)。我很困惑,因为当我第一次尝试简单的二次拟合时,一切都很好(即,它只显示一个拟合)。只有当我尝试二次多项式拟合时,它才立即向我显示两个拟合,即使当我尝试仅返回一个简单的二次拟合时,它仍然是。 我尝试回到一切都还不错的地步,但我无法重现所得到的结果,也不真正知道我现在正在做些什么。
最诚挚的问候,
Earl_Earlson
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import optimize
dataset = pd.read_csv("data.dat",sep=" ",names=["row number","line center","line center error","FWHM","central intensity","background","integrated intensity"])
row_number = dataset["row number"].to_numpy()
line_center = dataset["line center"].to_numpy()
def lin_fit(x,a,b):
return a * x + b
params_lin,params_covariance_lin = optimize.curve_fit(lin_fit,row_number,line_center,p0=[-0.04,1553])
print(params_lin)
def quad_fit(x,b):
return a*x*x + b
params_quad,params_covariance_quad = optimize.curve_fit(quad_fit,p0=[-2.08594942e-06,1.55156043e+03])
#print(params_quad)
#def cub_fit()
plt.plot(row_number,"go",markersize=1)
plt.plot(row_number,lin_fit(row_number,params_lin[0],params_lin[1]))
plt.plot(row_number,quad_fit(row_number,params_quad[0],params_quad[1]))
plt.show()
There are 3 fitplots for only two fit functions and I do not know why
解决方法
我发现我使用的数据集确实显示了相同x值的各种值,但是顺序很奇怪。所以我最终确定了数据的顺序,现在绘图看起来很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。