【问题标题】:from_formula() missing 2 required positional arguments: 'formula' and 'data'from_formula() 缺少 2 个必需的位置参数:“公式”和“数据”
【发布时间】:2020-01-14 07:22:03
【问题描述】:

statsmodels.formula.api 下的 ols 函数出现位置参数错误

已尝试使用 statsmodels.regression.linear_model 并将 OLS 更改为 ols,反之亦然。

import statsmodels.regression.linear_model as sm

X = np.append(arr=np.ones((50,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).fit()

预期输出是回归模型的拟合。但是我收到了这个错误:

from_formula() 缺少 2 个必需的位置参数:“公式”和 '数据'

【问题讨论】:

  • 发生了什么:regressor_OLS = sm.ols(X_opt, Y).fit()
  • TypeError: from_formula() 缺少 2 个必需的位置参数:'formula' 和 'data'
  • 我正在尝试执行向后消除::
  • Y - 表示目标集。而 X_opt 代表数据。所以基本上,我不明白位置参数是如何不正确的。是版本问题吗?谢谢。

标签: python machine-learning python-3.7 statsmodels linearmodels


【解决方案1】:

这应该可行:

import statsmodels.api as smf;

X = np.append(arr=np.ones((50,1),dtype=np.int), values = X,axis = 1)

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

regressor_ols = smf.OLS(y,X_opt).fit()

【讨论】:

  • 这不起作用。运行该解决方案你会得到“AttributeError:模块'statsmodels.formula'没有属性'OLS'
【解决方案2】:

为了让这个示例正常工作(我假设您正在运行 udemy 机器学习课程,这是本示例的一行一行),我必须更改导入语句。他们使用的库不再是 OLS 函数所在的位置。

import statsmodels.regression.linear_model as lm

然后

regressor_ols = lm.OLS(endog = y, exog = x_optimal).fit()

【讨论】:

    【解决方案3】:

    删除

    import statsmodels.regression.linear_model as sm

    只需导入 statsmodels.api 如下

    import statsmodels.api as sm

    课程已经很老了,这就是为什么代码片段已经过时了,不知道他们为什么不再更新它。

    【讨论】:

      【解决方案4】:

      伙计们,这个模块是 Linear_model 类的一部分,因此请使用以下代码使其工作。

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

      【讨论】:

        【解决方案5】:

        使用import statsmodels.regression.linear_model as lmimport statsmodels.api as sm

        import statsmodels.regression.linear_model as lm
        
        X=np.append(arr=np.ones((50,1)).astype(int), values=X, axis=1)
        X_opt=X[:,[0, 1, 2, 3, 4, 5]]
        regressor_x=sm.OLS(endog=y, exog=X_opt).fit()
        regressor_x.summary()
        

        【讨论】:

          【解决方案6】:

          这个对我有用

          import statsmodels.api as sm
          
          X=np.insert(X,0,np.ones(X.shape[0]),axis=1)
          
          colList=list()
          
          for i in range(X.shape[1]):
              colList.append(i)
          
          X_opt=np.array(X[:, colList], dtype=float)
          
          regressor_OLS=sm.OLS(endog=y,exog=X_opt).fit()
          

          【讨论】:

            【解决方案7】:

            解决方案 1:

            import statsmodels.api as sm
            x = np.append(arr= np.ones((50, 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).fit()
            

            解决方案 2:

            import statsmodels.regression.linear_model as lm
            x = np.append(arr= np.ones((50, 1)).astype(int), values= x, axis=1)
            x_opt = x[:, [0,1,2,3,4,5]]
            regressor_ols = lm.OLS(endog=y, exog=x_opt).fit()
            

            【讨论】:

            • 您需要为您提供的解决方案提供一些最低限度的解释。
            猜你喜欢
            • 2020-07-31
            • 2019-02-08
            • 2021-07-22
            • 1970-01-01
            • 2018-06-28
            • 2013-09-27
            • 2020-06-13
            • 2021-07-25
            • 1970-01-01
            相关资源
            最近更新 更多