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