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

如何在python 3.6中修改线性回归?,python,statsmodels,patsy,Python,Statsmodels,Patsy,代码如下所示: 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个小数

代码如下所示:

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()


提前谢谢你

哦,你发现了一个有趣的bug

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

但是你的公式里没有任何数字,那怎么回事?好的,您在公式解析器中遇到了一个错误:它检查某个东西是否是数字的方法是检查您是否可以将它传递到
int(…)
float(…)
并获取一个值。但是在Python中,
float(“inf”)
是一个有效的表达式,返回表示无穷大的浮点值,即使在Python中纯
inf
本身不是一个数字

我在这里提交了错误:


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

哦,你发现了一个有趣的bug

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

但是你的公式里没有任何数字,那怎么回事?好的,您在公式解析器中遇到了一个错误:它检查某个东西是否是数字的方法是检查您是否可以将它传递到
int(…)
float(…)
并获取一个值。但是在Python中,
float(“inf”)
是一个有效的表达式,返回表示无穷大的浮点值,即使在Python中纯
inf
本身不是一个数字

我在这里提交了错误:


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

多谢各位!这很有帮助!非常感谢你!这很有帮助!