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

Posted

技术标签:

【中文标题】Multipolyfit(Python):系数的顺序是啥?【英文标题】:Multipolyfit (Python): What order are the coefficients in?Multipolyfit(Python):系数的顺序是什么? 【发布时间】:2017-03-09 04:21:39 【问题描述】:

我正在使用 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]

以上系数的顺序是什么?

【问题讨论】:

相关:***.com/questions/18767523/fitting-data-with-numpy 这是一个因变量。我正在寻找多变量非线性回归。 【参考方案1】:

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

我很少回答有关此存储库的问题。它非常受欢迎,但实现非常密集,因此这个项目产生了大量合理的问题。很遗憾,我没有时间回复所有这些。

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

幸运的是,整个代码不到 100 行,而且很容易浏览。它创建了系数幂的排列:

[[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,hour,day,temp] 的幂。所以对于你的系数,你得到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])]

【讨论】:

非常感谢。 我认为库的作者对有用的定义错误。

以上是关于Multipolyfit(Python):系数的顺序是啥?的主要内容,如果未能解决你的问题,请参考以下文章

python逻辑回归怎么求正系数

初学python,怎样用python做pearson相关系数的检验呢,求指导啊

python3-相关系数

python pandas 计算相关系数

在python中查找逻辑回归的系数

python 求相关系数