Multipolyfit(Python):系数的顺序是什么?

时间:2016-10-26 17:17:18

标签: python numpy

我使用Multipolyfit函数创建具有3个独立变量(trivariate quadratic)的二度函数。代码如下

data=numpy.loadtxt("file.txt")
hour=data[:,3]
day=data[:,4]
temp=data[:,5]
load=data[:,6]
a=multipolyfit.multipolyfit(numpy.vstack((hour,day,temp)).T, load, 2)
print a

日,临时和负载是自变量。负载是我试图预测的变量。 输出似乎是我的三元二次方的8个系数的列表。

[ 27011.    771.   5462.   -394.    -29.    -83.     10.   -804.      9.      1]

上述系数的顺序是什么?

1 个答案:

答案 0 :(得分:0)

Multipolyfit的记录很少。作者甚至在他们的github自述文件中提到了以下内容:

  

我很少回答有关此存储库的问题。它很奇怪,但实现非常密集,所以这个项目产生了大量合理的问题。不幸的是,我没有时间回应所有这些。

     

如果它包含一个有用的算法,我会更关心这个项目。它没有。

幸运的是,对我们来说,整个代码不到一百行,很容易导航。它产生系数幂的排列:

[[2 0 0 0]
 [1 1 0 0]
 [1 0 1 0]
 [1 0 0 1]
 [0 2 0 0]
 [0 1 1 0]
 [0 1 0 1]
 [0 0 2 0]
 [0 0 1 1]
 [0 0 0 2]]

其中列分别对应于[1,小时,日,温度]的幂。因此,对于您的系数,您得到27011*(1**2) + 771*(1**1 * hour**1) + ...。您可以通过设置关键字参数powers_out=True

来自行获取此信息而无需深入研究代码
>>> a,powers=multipolyfit.multipolyfit(numpy.vstack((hour,day,temp)).T,
                                       load, 2, powers_out=True)
[array([2, 0, 0, 0]), array([1, 1, 0, 0]), array([1, 0, 1, 0]), array([1, 0, 0, 1]), array([0, 2, 0, 0]), array([0, 1, 1, 0]), array([0, 1, 0, 1]), array([0, 0, 2, 0]), array([0, 0, 1, 1]), array([0, 0, 0, 2])]