如何修改 python 3.6 中的线性回归?

How to modify a liner regression in python 3.6?

代码如下:

import statsmodels.formula.api as smf

df = pd.read_csv('reg_data.csv')
f = 'inf ~ rh*temp*tl*Tt*C(location)'   
lm = smf.ols(formula = f, data=df).fit()

但是总是报错:

numbers besides '0' and '1' are only allowed with **

文件中的数据都是不同的数字。有些有 2 位小数,有些有更多。 有解决这个问题并获得回归总结的想法吗? (来自 lm.summary()

提前致谢!

哦,你发现了一个有趣的错误。

首先,错误消息不是在谈论数据中的数字。当您在公式中键入文字数字时会出现该错误消息,例如 "y ~ 3*x" 它将引发该错误,因为它不喜欢 3.

但是您的公式中没有任何数字,这是怎么回事?那么,您在公式解析器中遇到了一个错误:它检查某物是否为数字的方式是检查您是否可以将它传递给 int(...)float(...) 并取回一个值。但是在 Python 中,float("inf") 是一个有效的表达式,即 returns 表示无穷大的浮点值,即使 inf 本身不是 Python 中的数字.

我在这里提交了错误:https://github.com/pydata/patsy/issues/118

目前的解决方法是避免使用字符串 inf 作为其中一个列的名称。 (出于同样的原因,您也应该避免使用 nan。)抱歉!