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

SciPyoptimize.curve提供了一个拟合函数的两个拟合图

如何解决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 举报,一经查实,本站将立刻删除。