尝试在 statsmodels python 中打印多重逻辑回归

trying to print mulitple logistic regressions in statsmodels python

我正在尝试在 statsmodels 中打印一系列逻辑回归,但不确定如何将结果打印到控制台屏幕以外的其他地方。我创建了一个函数 运行s 回归,其中数据是数据集,其他变量是数据集中的一系列虚拟变量标签列表(我确信这不是最有效的方法 运行 虽然这些,但它有效,并且当我有 5 个因变量想要 运行 回归时有意义,其中 9 个虚拟变量来自 var 2 和 15 in var3):

def regression(data, var1, var2, var3):
    for var in var 2:
        for var in var1:
            for var in var3:
                f = '%s ~ %s * %s' % (var1, var2, var3)
                y, x = patsy.dmatrices(f, data, return_type = 'dataframe')
                result = sm.Logit(y,x).fit()
                print(result.summary())
                print(np.exp(result.params))

无论如何 - 我正在尝试将输出打印到控制台以外的其他地方,以便我可以保存它并获得重要结果。我敢打赌答案并不难,但我是 python 和 statsmodels 的新手,在 statsmodels 文档或 Whosebug 上没有看到任何足够明显的内容。 谢谢

按照@zondo 所说的操作并打开一个文件。然后将文件句柄作为 out 参数传递给 print

我会尝试这样的事情:

with open("summary.txt", "w") as f:
    f.write(result.summary)
with open("params.txt", "w") as f:
    f.write(np.exp(result.params))

如果您想写入文件而不是标准输出,您可以打开文件并使用 .write():

def regression(...):
    with open("outfile") as out:
        for var in var 2:
            for var in var1:
                for var in var3:
                    ...
                    out.write(str(result.summary()) + "\n")
                    out.write(str(np.exp(result.params)) + "\n)

正如@NeilG 指出的那样,您也可以使用 print(result.summary(), out=out)。这几乎是 out.write(str(...) + "\n") 的快捷方式 如果您想将 result.summary()np.exp(result.params) 放在单独的文件中,请使用 with open("summary", "w") as summary, open("params", "w") as params: 并使用 summaryparams而不是 out.