如何在 Python 中使用 statsmodels.api.OLS

我已经开始学习机器学习,并且正在尝试实现线性回归反向消除。这是代码:


import statsmodels.api as sm

x = sm.add_constant(x)

x_opt = x[:,[0,1,2,3,4,5]]

regressor_OLS = sm.OLS(endog=y,exog=x_opt)

这是错误:


Traceback (most recent call last):

  File "<input>", line 1, in <module>

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\regression\linear_model.py", line 859, in __init__

    hasconst=hasconst, **kwargs)

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\regression\linear_model.py", line 702, in __init__

    weights=weights, hasconst=hasconst, **kwargs)

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\regression\linear_model.py", line 190, in __init__

    super(RegressionModel, self).__init__(endog, exog, **kwargs)

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\base\model.py", line 236, in __init__

    super(LikelihoodModel, self).__init__(endog, exog, **kwargs)

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\base\model.py", line 77, in __init__

    **kwargs)

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\base\model.py", line 100, in _handle_data

    data = handle_data(endog, exog, missing, hasconst, **kwargs)

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\base\data.py", line 672, in handle_data

    **kwargs)

  File "C:\Users\ewasy\AppData\Local\Programs\Python\Python37\lib\site-packages\statsmodels\base\data.py", line 87, in __init__

    self._handle_constant(hasconst)


这是变量 x 的 2 行:


array([[1.0, 0.0, 1.0, 2.016411493158463, 0.560752914530775,2.153943088571744],

       [1.0, 0.0, 0.0, 1.9558603364325031, 1.0828065830760816,1.9236003956421444]], dtype=object)

这是变量 y 的 2 行:


array([[2.01120333],[1.99942997]])


手掌心
浏览 171回答 2
2回答

慕工程0101907

问题是在您的代码x中有dtype=object而不是dtype=float, 即x不是数字变量,因此它不能用作回归量。一旦x转换为float您的代码就可以工作。

心有法竹

import statsmodels.api as smdef model(X,y):&nbsp; &nbsp; X=sm.add_constant(X)&nbsp; &nbsp; lm_model=sm.OLS(y,X).fit()&nbsp; &nbsp; print(lm_model.summary())&nbsp; &nbsp; return XX_train1=model(X_train_rfe,y_train)如果您想查看基本的详细 ML 问题:https ://github.com/ds-souvik/Machine-Learning-Basic-Intermediate-Expert./tree/master/10%20Linear%20Regression-%20BoomBikes%20Bike%20Sharing %20服务%20业务%20案例
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python