Python 拟合图形以查找数据曲线的渐变

Python 拟合图形以查找数据曲线的渐变,python,matplotlib,curve-fitting,data-fitting,hyperparameters,Python,Matplotlib,Curve Fitting,Data Fitting,Hyperparameters,所以我有一堆数据,我需要找到它的梯度。数据的设置就像我有核金属丰度,它是一个星系中心的金属丰度(距离=0)和一堆不同星系在中心不同距离的金属丰度。我想找到一个通用梯度,所以我计划绘制所有数据,并寻找一条最佳拟合曲线。这个想法是金属丰度就是它的中心。所以我需要修正任何金属丰度梯度,使它返回正确的核金属丰度。我需要将任何梯度的偏移量修正为核金属丰度(当拟合单个星系时)或0(如果根据它们的核金属丰度移动所有元素并拟合整个样本)。 下面是我的数据示例 NAME Metallicity Nucle

所以我有一堆数据,我需要找到它的梯度。数据的设置就像我有核金属丰度,它是一个星系中心的金属丰度(距离=0)和一堆不同星系在中心不同距离的金属丰度。我想找到一个通用梯度,所以我计划绘制所有数据,并寻找一条最佳拟合曲线。这个想法是金属丰度就是它的中心。所以我需要修正任何金属丰度梯度,使它返回正确的核金属丰度。我需要将任何梯度的偏移量修正为核金属丰度(当拟合单个星系时)或0(如果根据它们的核金属丰度移动所有元素并拟合整个样本)。 下面是我的数据示例

NAME   Metallicity   Nuclear Metallicity    Distance 
1990U   -             -                     -
1991ar  8.52          -                     4.61
1996d   8.66          -                     2.0295
1996aq  8.59          9.03                  2.97297
1997B   -             -                     8.24493
1999cn  8.69          -                     16.71392
2005eo  8.49          9.23                  10.25775
2005mf  8.83          9.05                  7.2698
2006jc  -             8.48                  2.0295
2007uy  8.7           9                     3.61248
2008D   8.86          9                     9.59352
所以我基本上想要一个方程,比如金属丰度-核金属丰度=距离*梯度。 现在我正在使用一个非常简单的脚本,它只调用文本文件中的数据,然后使用matplotlib进行打印。我所困惑的是如何偏移图形,使核金属丰度为零,我可以得到一个普遍梯度。因为上面的方程使用了梯度,但我需要为它求解,我不知道该怎么做。有人知道如何使用超参数拟合图形吗? 请让我知道,如果你需要更多的信息和先进的感谢

编辑:
所以我想梯度的意思是一个最佳拟合线的方程。基本上,我在一个星系的中心有一个金属丰度,在一系列不同星系的中心距离有一个金属丰度,我需要用数据找到一个方程,所以如果我知道中心金属丰度和距离中心的距离,我可以把它插入到方程中,知道在那个点的金属丰度。因为目前所有的星系都有不同的金属丰度,所以我试图拟合所有的数据来找到梯度。这有意义吗?再次感谢

如果你试图拟合的方程是

Metallicity - Nuclear Metallicity = distance * gradient
如果数据位于名为
df
的数据帧中,则让LHS=y,距离=x:

import numpy as np

#drop rows with nulls
df = df.dropna()

y = df['Metallicity'] - df['Nuclear Metallicity']
x = df['Distance']

#fit a degree-1 polynomial i.e. a line
intercept, gradient = np.polyfit(x,y,1)
print(intercept,gradient)

-0.0116381176987 -0.289543910605

如果你想拟合的方程是

Metallicity - Nuclear Metallicity = distance * gradient
如果数据位于名为
df
的数据帧中,则让LHS=y,距离=x:

import numpy as np

#drop rows with nulls
df = df.dropna()

y = df['Metallicity'] - df['Nuclear Metallicity']
x = df['Distance']

#fit a degree-1 polynomial i.e. a line
intercept, gradient = np.polyfit(x,y,1)
print(intercept,gradient)

-0.0116381176987 -0.289543910605

您是否查看了
scipy.optimize.curve\u fit
scipy
软件包?对于所有的拟合问题,我都强烈推荐它。你能给出梯度的定义吗?也许还有你对上面例子的预期结果?所以我添加了梯度的定义。此外,我还寻找了合适的软件包,但没有找到。非常感谢您让我了解scipy。我会查一下,看看是否有用。你有没有看一下
scipy.optimize.curve\u fit
scipy
软件包?对于所有的拟合问题,我都强烈推荐它。你能给出梯度的定义吗?也许还有你对上面例子的预期结果?所以我添加了梯度的定义。此外,我还寻找了合适的软件包,但没有找到。非常感谢您让我了解scipy。我会查一下看是否有用。