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

时间:2015-07-29 04:34:29

标签: python matplotlib curve-fitting data-fitting hyperparameters

所以我有一堆数据需要找到渐变。数据设置就像我具有核金属度,即银河系中心的金属度(距离= 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

所以我基本上想要一个像Metallicity - Nuclear Metallicity = distance * gradient这样的等式。 现在我使用的是一个非常简单的脚本,它只调用文本文件中的数据,然后使用matplotlib绘制它。我感到困惑的是如何抵消图形以使核金属度为零并且我可以得到通用梯度。由于上面的等式使用了渐变,但我需要解决它,我不知道如何解决这个问题。有谁知道如何使用超参数拟合图形? 如果您需要更多信息并提前感谢,请告知我们。

编辑: 所以我对渐变的意思是我认为最合适的线的方程。基本上我在银河系的中心有一个金属度,并且在距离中心一段距离的金属度上有一堆不同的星系,我需要找到一个使用数据的方程式,所以如果我知道中心金属度和距离中心的距离我可以将其插入所述方程式以了解该点的金属度。由于目前所有星系都具有不同的金属度,我试图拟合所有数据以找到梯度。那有意义吗?再次感谢。

1 个答案:

答案 0 :(得分:0)

如果你想要适合的等式是

Metallicity - Nuclear Metallicity = distance * gradient

如果您的数据位于名为df的pandas数据框中,则让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