【问题标题】:trying to print mulitple logistic regressions in statsmodels python试图在 statsmodels python 中打印多重逻辑回归
【发布时间】:2016-03-20 20:02:26
【问题描述】:

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

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 文档或 stackoverflow 上还没有看到任何明显的东西。 谢谢

【问题讨论】:

  • with open("outfile-name.txt", "w") as out: sys.stdout = out ...
  • @zondo:我认为写信给sys 不是一个好主意:/
  • @NeilG:确实如此。我什至没有想过说了什么。只要您要更改每个print() 调用,为什么不使用fileobject.write(...) 而不是print(..., out=fileobject)
  • @zondo 我不确定。也许添加一个解释差异的替代答案?
  • @NeilG:我已经听从了你的建议。在这个过程中,我意识到为什么使用print 更容易;)

标签: python logistic-regression statsmodels


【解决方案1】:

如果你想写入文件而不是标准输出,你可以打开文件并使用.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

【讨论】:

  • 伙计——随着我对 python 的深入了解,我不断发现这么多答案是多么简单。谢谢!
【解决方案2】:

我会尝试这样的:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 2015-04-18
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2018-04-06
      相关资源
      最近更新 更多