1

我有一堆数据需要找到梯度。数据的设置就像我有核金属丰度一样,它是星系中心的金属丰度(距离 = 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 绘制它。我感到困惑的是如何偏移图表以使核金属丰度为零并且我可以获得通用梯度。由于上面的等式使用了梯度,但我需要解决它,我不知道该怎么做。有谁知道如何使用超参数拟合图形?

编辑:

所以我所说的梯度是我想的最佳拟合线的方程。基本上我在星系的中心有一个金属丰度,而对于一堆不同的星系来说,金属丰度在离中心一定距离的地方,我需要使用这些数据找到一个方程,所以如果我知道中心金属丰度和到中心的距离我可以将其代入所述方程以了解该点的金属丰度。由于目前所有星系都有不同的金属丰度,我试图拟合所有数据以找到梯度。那有意义吗?

4

1 回答 1

0

如果您要拟合的方程式是

Metallicity - Nuclear Metallicity = distance * gradient

然后让 LHS = y 和距离 = x,如果您的数据位于名为的 pandas 数据帧中df

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
于 2015-07-30T03:44:41.717 回答