AttributeError:模块“statsmodels.formula.api”没有属性“OLS”
Posted
技术标签:
【中文标题】AttributeError:模块“statsmodels.formula.api”没有属性“OLS”【英文标题】:AttributeError: module 'statsmodels.formula.api' has no attribute 'OLS' 【发布时间】:2019-10-20 07:58:42 【问题描述】:我正在尝试使用普通最小二乘法进行多变量回归。但它说statsmodels没有属性'OLS'。公式。 api 库。 我正在关注 Udemy 讲座中的代码 代码如下:
import statsmodels.formula.api as sm
X_opt = X[:,[0,1,2,3,4,5]]
#OrdinaryLeastSquares
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit(
错误如下:
AttributeError Traceback (most recent call last)
<ipython-input-19-3bdb0bc861c6> in <module>()
2 X_opt = X[:,[0,1,2,3,4,5]]
3 #OrdinaryLeatSquares
----> 4 regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
AttributeError: module 'statsmodels.formula.api' has no attribute 'OLS'
【问题讨论】:
你可以查看statsmodels
的版本,是不是>= 0.5.0?类似print (statsmodels.__version__)
使用import statsmodels.api as sm
。 formula.api
现在只有小写模型的公式接口,例如 ols
【参考方案1】:
为了完整起见,如果 statsmodels.version 为 0.10.0,则代码应如下所示:
import statsmodels.api as sm
X_opt = X[:,[0,1,2,3,4,5]]
#OrdinaryLeastSquares
regressor_OLS = sm.OLS(endog=y, exog=X_opt).fit()
【讨论】:
【参考方案2】:试试这个,对我有用:
import statsmodels.regression.linear_model as sm
【讨论】:
【参考方案3】:使用此导入。
import statsmodels.api as sm
【讨论】:
【参考方案4】:上述方法我都试过了,虽然
import statsmodels.api as sm
导入对我有用。当我运行下一段代码时
X_opt = X[:, [0, 1, 2, 3, 4, 5]]
regressor_OLS = sm.OLS(endog=y, exog=X_opt).fit()
它给了我这个错误。
TypeError: ufunc 'isfinite' 不支持输入类型,并且 输入无法安全地强制转换为任何支持的类型 强制转换规则“安全”
如果您遇到上述错误,您可以通过为np.array
指定dtype
来解决它。
替换
X_opt = X[:, [0, 1, 2, 3, 4, 5]]
与
X_opt = np.array(X[:, [0, 1, 2, 3, 4, 5]], dtype=float)
【讨论】:
【参考方案5】:这是我今天尝试的有效解决方案。 在导入中使用它
import statsmodels.api as sm
下面提到了您的其余修复
X_opt = X[:, [0, 1, 2, 3, 4, 5]]
X_opt = X_opt.astype(np.float64)
regressor_OLS = sm.OLS(Y, X_opt).fit()
这应该可行,因为它确实对我有用。
【讨论】:
【参考方案6】:正如@Josef 在评论中提到的,使用 ols() 而不是 OLS(),OLS() 确实不存在。
【讨论】:
以上是关于AttributeError:模块“statsmodels.formula.api”没有属性“OLS”的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:模块'asyncio'没有属性'run'
AttributeError:模块'mysql'没有属性'connector'
AttributeError:模块 'urllib' 没有属性 'parse'