在 Python 中同时进行多个泊松回归

Simultaneously do multiple Poisson regressions in Python

我有表格的数据

n = number of samples

features: n x 1 matrix
data: n x m matrix

我想使用相同的 features 执行多个泊松回归,其中输出值因数据列而异。目前,我使用 sklearn 一次进行一个泊松回归,例如我的 Python 代码看起来像

from sklearn import linear_model

clf = linear_model.PoissonRegressor(fit_intercept=True,alpha=0)
for col in range(m):
    clf.fit(features,data[:,col])

但是我必须做 很多 这些泊松回归而且单独做它们太慢了。所以我的问题是:有没有一种方法(在 Python 中)我可以一次同时进行所有这些泊松回归?

如果我改为进行线性回归,那么我可以使用很好的矩阵技巧来同时进行这些操作。然而,这里的主要区别在于泊松回归涉及使用优化算法来最大化似然函数。所以基本上,我想一次解决多个优化问题。

我尝试的一件事是使用 scipy.optimize 最大化每个泊松回归的(对数)似然之和。然而,这对初始化非常敏感并且没有收敛。

因此我希望有:

  1. 一个更好的 Python 优化包,我可以使用它来最大化泊松回归 objective 函数(似然总和),或者
  2. 一个 Python 包,允许您同时进行泊松回归。

有人有什么想法吗?如有任何帮助,我们将不胜感激。谢谢!

您似乎在寻找 multiprocessing
它将使您能够同时进行 运行 N 次泊松回归计算。
下面是一个简单的例子:

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))