提取与numpy.polyfit多变量方程的系数

问题描述 投票:1回答:1

这是那些也许会非常明显,一旦回答问题之一,但现在我卡住了。

我试图重新创建一个结果集的方程和产生它的四个参数。

该数据是在与最后一列作为结果的矩阵。

我看到numpy.polyfit允许y的多个值,所以我想...

result=data[:,-1]
variables=data[:,0:-1]
factors=numpy.polyfit(result,variables,2)

结果出来是:

[[-4.69652251e-01  8.09734523e-01  1.93673361e-02 -1.62700198e+00]
[ 1.42092582e+01 -7.06024402e+00 -9.94583683e-02  1.11882833e+01]
[ 7.44030682e+00  2.08161127e+01  2.65025708e-01  1.14229534e+01]]

我假设的结果系数形式

[[A^2,B^2,C^2,D^2]
 [A  ,B,  C,  D]
 [const,const,const,const]]

这是一个小令人费解​​,尤其是,如果我申请的系数输入数据我似乎并没有得到好东西甚至接近结果数据。

首先,我是连说得对polyfit的结果的意义?

其次,为什么有四个常数,所有的不同?我应该把它们加起来,还是什么?

这是仅仅求解A对结果,则B对结果等,而不是合并了整个的多维最小化?? (如果是的话,我怎么能做到这一点呢?)

还是我误导了什么polyfit首先是干什么的?

python numpy
1个回答
1
投票

Polyfit docs告诉我们,

样本点共享相同的x坐标的几个数据集可以一次通过使在包含每列一个数据集的2D阵列被装配。

让我们来了解它。首先,让我们考虑一个例子。假设我们有在飞机上3个点,想在1度的多项式插值他们来说,这意味着我们要绘制通过给3分线,而这条线应该有这点最小平方距离。比方说,我们有3点:(1, 1), (2, 2), (3, 3)。很显然,这是有可能找到它是通过这些点去没有任何错误就行了,这条线是y = x。如果我们认为行的y = a * x + b的条款,然后a = 1, b = 0line y=x

好。现在,就让我们从给这个例子numpy的polyfit开始:

X = np.array([1, 2, 3])
y = np.array([1, 2, 3])

a, b = np.polyfit(X, y, deg=1)

(a, b)
>>> (0.9999999999999997, 1.2083031466395714e-15)

a * 1000 + b
>>> 999.9999999999997

尼斯。现在,让我们做与矩阵,而不是Y的一个载体的例子。文件告诉我们,我们只是具有多线,相同的X坐标。让我们来检查一下。我们把两组穴位:(1, 1), (2, 2), (3, 3)与适合他们y = x(1, 2), (2, 4), (3, 6)。拟合线y = 2x(检查!)。

two lines

因为polyfit希望它我们调换第二矩阵。

X = np.array([1, 2, 3])
y = np.array([[1, 2, 3], [2, 4, 6]]).T
coeff = np.polyfit(X, y, deg=1)

coeff
>>> array([[1.00000000e+00, 2.00000000e+00],
       [1.20830315e-15, 2.41660629e-15]])

我们看到,我们与第一排(1, 2)排和第二排(0, 0)的矩阵。所以,第一列包含系数的第一线,和第二单 - 第二线。让我们检查:

a, b = coeff[:, 0]
a * 10 + b
>>> 9.999999999999998

a, b = coeff[:, 1]
a * 100 + b
>>> 199.99999999999994

所以,你可以通过多条线路与相同的X坐标,并同时得到许多适合。它可以是有用的,例如,用于将特征为一大堆数据。

© www.soinside.com 2019 - 2024. All rights reserved.