Python 等同于 R poly() 函数?

标签 python r polynomials

我正在尝试了解如何使用 scikit-learn(或其他模块)在 R 中复制 poly() 函数。

例如,假设我在 R 中有一个向量:

a <- c(1:10)

我想生成三次多项式:

polynomial <- poly(a, 3)

我得到以下信息:

              1           2          3
[1,] -0.49543369  0.52223297 -0.4534252
[2,] -0.38533732  0.17407766  0.1511417
[3,] -0.27524094 -0.08703883  0.3778543
[4,] -0.16514456 -0.26111648  0.3346710
[5,] -0.05504819 -0.34815531  0.1295501
[6,]  0.05504819 -0.34815531 -0.1295501
[7,]  0.16514456 -0.26111648 -0.3346710
[8,]  0.27524094 -0.08703883 -0.3778543
[9,]  0.38533732  0.17407766 -0.1511417
[10,]  0.49543369  0.52223297  0.4534252

我对 python 比较陌生,我正在尝试了解如何利用 sklearn 中的 PolynomiaFeatures 函数来复制它。我花了一些时间查看 PolynomialFeatures 文档中的示例,但我仍然有点困惑。

任何见解将不胜感激。谢谢!

最佳答案

事实证明,您可以通过对矩阵执行 QR 分解来复制 R 的 poly(x,p) 函数的结果,该矩阵的列是输入向量 x< 的幂 从第 0 次方(所有的)到第 p 次方。 Q 矩阵减去第一个常量列,即可得到您想要的结果。

因此,以下应该有效:

import numpy as np

def poly(x, p):
    x = np.array(x)
    X = np.transpose(np.vstack((x**k for k in range(p+1))))
    return np.linalg.qr(X)[0][:,1:]

特别是:

In [29]: poly([1,2,3,4,5,6,7,8,9,10], 3)
Out[29]: 
array([[-0.49543369,  0.52223297,  0.45342519],
       [-0.38533732,  0.17407766, -0.15114173],
       [-0.27524094, -0.08703883, -0.37785433],
       [-0.16514456, -0.26111648, -0.33467098],
       [-0.05504819, -0.34815531, -0.12955006],
       [ 0.05504819, -0.34815531,  0.12955006],
       [ 0.16514456, -0.26111648,  0.33467098],
       [ 0.27524094, -0.08703883,  0.37785433],
       [ 0.38533732,  0.17407766,  0.15114173],
       [ 0.49543369,  0.52223297, -0.45342519]])

In [30]: 

关于Python 等同于 R poly() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317127/

相关文章:

r - 在 R 中通过组语句应用?

matlab - 我如何在Matlab中获取.wav(音频)文件的多项式形式

python - 无法理解 sklearn 的 PolynomialFeatures

python - 在 PyQT4 程序中无法获得多语言支持

r - 具有异方差校正的标准误差的回归

python - 我的 Facebook 应用程序应该使用哪种授权

早高峰时间的 R 检验 - 区间内的时间向量

c++ - 动态数组 C++ 多项式类

python - 在考虑附加属性的情况下识别 Python 中的空间集群

python - 在Python中检查值是否存在于一系列开始和结束位置中的最有效方法是什么?