Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SciPy optimize.curve给出了一个拟合函数的两个拟合图_Python_Scipy_Scipy Optimize - Fatal编程技术网

Python SciPy optimize.curve给出了一个拟合函数的两个拟合图

Python SciPy optimize.curve给出了一个拟合函数的两个拟合图,python,scipy,scipy-optimize,Python,Scipy,Scipy Optimize,我对使用python还很陌生,所以我希望我的问题不是一个太愚蠢的问题 我目前正在尝试对一组数据进行不同的拟合(线性、二次、三次),最后,我想比较不同的拟合。但是在这样做的时候,在我尝试了一个简单的二次拟合(f(x)=ax^2+b)之后,我也尝试了一个二次多项式拟合(f(x)=ax^2+b*x+c),但是结果图给了我两个而不是一个二次拟合(线性拟合总共3个)。我很困惑,因为当我第一次尝试简单的二次拟合时,一切都很好(即,它只显示了一次拟合)。只有当我尝试二次多项式拟合时,它开始一次向我展示两个拟合

我对使用python还很陌生,所以我希望我的问题不是一个太愚蠢的问题

我目前正在尝试对一组数据进行不同的拟合(线性、二次、三次),最后,我想比较不同的拟合。但是在这样做的时候,在我尝试了一个简单的二次拟合(f(x)=ax^2+b)之后,我也尝试了一个二次多项式拟合(f(x)=ax^2+b*x+c),但是结果图给了我两个而不是一个二次拟合(线性拟合总共3个)。我很困惑,因为当我第一次尝试简单的二次拟合时,一切都很好(即,它只显示了一次拟合)。只有当我尝试二次多项式拟合时,它开始一次向我展示两个拟合,现在仍然如此,即使我尝试返回到一个简单的二次拟合。 我试着回到一切正常的时候,但我无法重现我的结果,也不知道我现在做的有什么不同

致以最良好的祝愿

厄尔·厄尔森

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, a, b):
    return a*x*x + b

params_quad, params_covariance_quad = optimize.curve_fit(quad_fit, row_number, line_center,
                                                         p0=[-2.08594942e-06, 1.55156043e+03])

#print(params_quad)

#def cub_fit() 


plt.plot(row_number, line_center, "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()

我发现我使用的数据集确实显示了相同x值的不同值,但顺序很奇怪。所以我最终确定了数据的顺序,现在绘图看起来很好。

我发现我使用的数据集确实显示了相同x值的各种值,但顺序非常奇怪。因此,我最终确定了数据的顺序,现在绘图看起来很好。

看起来您的两个拟合函数有两个拟合绘图,数据中有一个“线中心”绘图。你能通过看3个拟合图来阐明你的意思吗?您调用plt.plot()3次,因此预期您将在图形上看到3个绘图。添加的链接显示总绘图。其中有3个拟合和一个原始数据图(仅点)。是的,我调用plt.plot三次,但第一次只是绘制数据本身。第二个是线性拟合,第三个应该显示一个二次曲线图,但显示两个。但我开始认为这不是额外拟合,而是实际拟合在行号间隔的末尾做了一些奇怪的事情。我的意思是,它看起来像是在整个时间间隔内进行了适当的拟合,但最终以直线返回到一个点,然后以直线返回到另一个点。是的,对不起,我因为另一个问题而分心,但考虑到情节的颜色,这也是我的感觉。我看不出有什么明显的问题,但您是否考虑过重新启动内核并重试?还是只是清理阴谋?也许那条额外的线路是你之前做过的实验的残余?你好,对不起,我昨晚放弃了,今天很忙。我试着重新启动内核,同时清除情节。我还尝试了scipy.optimize thingy给我的参数,用它创建了一个自己的函数,但它仍然给出了这些奇怪的直线。看起来你的两个拟合函数有两个拟合图,数据中有一个“线中心”图。你能通过看3个拟合图来阐明你的意思吗?您调用plt.plot()3次,因此预期您将在图形上看到3个绘图。添加的链接显示总绘图。其中有3个拟合和一个原始数据图(仅点)。是的,我调用plt.plot三次,但第一次只是绘制数据本身。第二个是线性拟合,第三个应该显示一个二次曲线图,但显示两个。但我开始认为这不是额外拟合,而是实际拟合在行号间隔的末尾做了一些奇怪的事情。我的意思是,它看起来像是在整个时间间隔内进行了适当的拟合,但最终以直线返回到一个点,然后以直线返回到另一个点。是的,对不起,我因为另一个问题而分心,但考虑到情节的颜色,这也是我的感觉。我看不出有什么明显的问题,但您是否考虑过重新启动内核并重试?还是只是清理阴谋?也许那条额外的线路是你之前做过的实验的残余?你好,对不起,我昨晚放弃了,今天很忙。我试着重新启动内核,同时清除情节。我还尝试了scipy.optimize thingy给我的参数,用它创建了一个自己的函数,但它仍然给出了这些奇怪的直线。