如何在 statsmodels 中训练模型?

How can I train a model in statsmodels?

这是一个非常简单的问题,我知道有些人可能会给出 -1,但请让我更好地解释一下。

互联网上的大多数 statsmodels 教程(例如 this, this and this)通常创建线性回归而不将数据集拆分为训练和测试。他们使用以下语法创建线性回归:

import statsmodels.formula.api as sm
sm.ols('y~x1+x2+x3', data=df).fit()

没有测试数据集建立模型有多危险就不用说了

我的问题是如何使用训练和测试拆分创建带有统计模型的线性回归?

经过大量搜索,我找到了这个方法:

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'

我知道我应该提供一个数据集,但不幸的是,我正在处理机密数据。但是你拥有的任何数据集都应该足以了解情况。

试试这个,

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 = sm.OLS(y_train, X_train).fit()