【问题标题】:Error using statsmodels.api using ols().fit()使用 statsmodels.api 使用 ols().fit() 时出错
【发布时间】:2019-10-29 20:57:39
【问题描述】:

我一直在关注有关 Udemy 的机器学习教程。我正在使用statsmodels.formula.api 库,但OLS 类不在其中,我猜它已被移动,因为我发现一个线程说要使用statsmodels.api 并导入。问题是当我在sm.OLS() 上运行fit() 方法时,代码如下,我得到错误'NoneType' Object has no attribute 'shape'。这是代码和错误。

import statsmodels.api as sm
X = np.append(arr = np.ones((len(X), 1)).astype(int), values = X , axis = 1)
X_opt = X[:, [0, 1, 2, 3, 4, 5]]
regressor_OLS = sm.OLS(endog = y, exorg = X_opt).fit()

在线错误regressor_OLS = sm.OLS(endog = y, exorg = X_opt).fit()

AttributeError: 'NoneType' object has no attribute 'shape'

注意:如果我排除 .fit() 就像只运行 regressor_OLS = sm.OLS(endog = y, exorg = X_opt) 一样,它可以正常工作,但不是我想要的结果。

【问题讨论】:

  • 错字exorg -> exog。这是一个位置参数,但如果拼写正确,python 允许使用关键字
  • @Josef 感谢您的帮助。我想到了。事实证明,我只需要将regressor_OLS = sm.OLS(endog = y, exorg = X_opt) 替换为regressor_OLS = sm.OLS(y, X_opt)。我是新手,所以我不知道关键字 args where 是什么,而且我的错误是没有阅读基本文档。再次感谢

标签: python machine-learning statsmodels


【解决方案1】:

改成

import statsmodels.api as sm
X = np.append(arr = np.ones((len(X), 1)).astype(int), values = X , axis = 1)
X_opt = X[:, [0, 1, 2, 3, 4, 5]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt)
res=regressor_OLS.fit()

这是因为您必须在初始化后拟合回归量。在其他注意事项上刚刚注意到它是 exog 而不是 exorg

希望这会有所帮助。

【讨论】:

  • 感谢您的回复。我想到了。事实证明,我只需要将 regressor_OLS = sm.OLS(endog = y, exorg = X_opt) 替换为 regressor_OLS = sm.OLS(y, X_opt)
猜你喜欢
  • 2020-07-15
  • 2019-05-21
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
相关资源
最近更新 更多