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):系数的顺序是啥?的主要内容,如果未能解决你的问题,请参考以下文章