AttributeError:模块“ statsmodels.formula.api”没有属性“ OLS”

时间:2019-06-04 18:57:54

标签: python machine-learning linear-regression statsmodels

我正在尝试使用普通最小二乘进行多元回归。但是它说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'

8 个答案:

答案 0 :(得分:11)

我尝试了上述方法,而

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',并且 根据以下说明,无法将输入安全地强制转换为任何受支持的类型 强制转换为“安全”

如果遇到上述错误,可以通过为dtype指定np.array来解决。

替换

X_opt = X[:, [0, 1, 2, 3, 4, 5]]

X_opt = np.array(X[:, [0, 1, 2, 3, 4, 5]], dtype=float)

答案 1 :(得分:4)

使用此导入。

import statsmodels.api as sm

答案 2 :(得分:4)

我正在使用 statsmodels 0.11.1 ,这对我有用。

import statsmodels.api as sm
X_opt = np.array(X[:, [0, 1, 2, 3, 4, 5]], dtype=float)
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()

答案 3 :(得分:2)

出于完整性考虑,如果statsmodels,则代码应如下所示。版本为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()

答案 4 :(得分:2)

试试这个,对我有用:

import statsmodels.regression.linear_model as sm

答案 5 :(得分:2)

除了statsmodels库的导入方式外,其他所有内容看起来都很不错。如下:

import statsmodels.api as sm

而不是

import statsmodels.formula.api as sm

答案 6 :(得分:1)

这是我今天尝试的有效解决方案。
在导入中使用它

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

这应该起作用,因为它确实对我有用。

答案 7 :(得分:1)

将代码python从3.6升级到3.8.5时引发此错误 如@ kv89所述,快速解决方案是将代码更改为

import statsmodels.formula.api as sm  

import statsmodels.api as sm