python statsmodels 线性回归和多处理池

问题描述 投票:0回答:1

在计算模型的不同置信区间时,我想使用多重处理进行线性回归建模。

在此示例中,我使用来自 https://www.geeksforgeeks.org/linear-regression-in-python-using-statsmodels/.

的数据集。

我已经安装了模型。我查看了置信区间

print model.summary()
,默认置信区间是95%。我知道您可以使用
alpha
中的
model.summary(alpha=0.01)
参数将置信区间设置为 99%。

我希望代码的输出是具有不同置信区间的摘要列表。下面代码的问题在于列表中的每个摘要都具有相同的默认 95% 置信区间。显然,通过不同的置信区间是行不通的。但我该如何让它发挥作用呢?

谢谢!

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from multiprocessing import Pool

# Data
df = pd.read_csv('C:\\Users\\Me\\Desktop\\headbrain1.csv')

# Model
df.columns = ['Head_size', 'Brain_weight']
model = smf.ols(formula='Head_size ~ Brain_weight', data=df).fit()

# Summaries 
if __name__ == "__main__":
    pool = Pool()
    summaries_list = pool.map(model.summary, [0.05, 0.04 0.01])   
    print(summaries_list)               
python multiprocessing linear-regression python-multiprocessing statsmodels
1个回答
0
投票

问题在于,

model.summary()
中的
statsmodels
方法与
Pool.map
一起使用时不直接接受alpha参数。为了解决这个问题,您可以使用 lambda 函数或 Python 的
functools.partial
创建一个接受 alpha 值的包装器。

这是使用 lambda 函数修改代码的一种方法:

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from multiprocessing import Pool


df = pd.read_csv('C:\\Users\\Me\\Desktop\\headbrain1.csv')
df.columns = ['Head_size', 'Brain_weight']
model = smf.ols(formula='Head_size ~ Brain_weight', data=df).fit()

# Function to get summary with different alpha values
def get_summary(alpha):
    return model.summary(alpha=alpha)

# Summaries 
if __name__ == "__main__":
    pool = Pool()
    alphas = [0.05, 0.04, 0.01]
    summaries_list = pool.map(get_summary, alphas)
    pool.close()
    pool.join()
    for summary in summaries_list:
        print(summary)
© www.soinside.com 2019 - 2024. All rights reserved.