在 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
最大化每个泊松回归的(对数)似然之和。然而,这对初始化非常敏感并且没有收敛。
因此我希望有:
- 一个更好的 Python 优化包,我可以使用它来最大化泊松回归 objective 函数(似然总和),或者
- 一个 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]))
我有表格的数据
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
最大化每个泊松回归的(对数)似然之和。然而,这对初始化非常敏感并且没有收敛。
因此我希望有:
- 一个更好的 Python 优化包,我可以使用它来最大化泊松回归 objective 函数(似然总和),或者
- 一个 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]))