【发布时间】:2021-08-26 17:05:20
【问题描述】:
这是一个非常简单的问题,我知道有些人会倾向于给出-1,但请让我解释得更好。
互联网上的大多数 statsmodels 教程(例如 this、this 和 this)通常会创建线性回归,而不会将数据集拆分为训练和测试。他们使用此语法创建线性回归:
import statsmodels.formula.api as sm
sm.ols('y~x1+x2+x3', data=df).fit()
不用说在没有测试数据集的情况下构建模型有多危险。
我的问题是如何使用 statsmodels 创建线性回归,使用训练和测试拆分?
找了好久,找到了这个办法:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
features, target, train_size=0.8, random_state=42
)
import statsmodels.api as sm
smfOLS = smf.OLS(X_train, y_train).fit()
但是,我收到了这个错误:
AttributeError: module 'statsmodels.formula.api' has no attribute 'OLS'
我知道我应该提供一个数据集,但不幸的是,我正在处理机密数据。但是您拥有的任何数据集都应该足以了解情况。
【问题讨论】:
标签: python linear-regression statsmodels