如何修改 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
。)抱歉!
代码如下:
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
。)抱歉!