【问题标题】:Using statsmodels OLS on a test-set在测试集上使用 statsmodels OLS
【发布时间】:2019-09-07 23:40:58
【问题描述】:

我想使用 Scikit Learn 的一种技术,即 ShuffleSplit,用一系列随机测试和训练集对我的线性回归模型进行基准测试。这在 Scikit Learn 中已经很成熟并且非常适合使用:

from sklearn.linear_model import LinearRegression
LM = LinearRegression()
train_score = LM.score(X[train_index], Y[train_index])
test_score = LM.score(X[test_index], Y[test_index])

这里得到的分数只是 R² 值,仅此而已。使用线性模型的 statsmodel OLS 实现提供了一组非常丰富的分数,其中调整了 R² 和 AIC、BIC 等。然而,这里只能用训练数据拟合模型来获得这些分数。有没有办法让它们也用于测试集?

在我的例子中:

from sklearn.model_selection import ShuffleSplit
from statsmodels.regression.linear_model import OLS

ss = ShuffleSplit(n_splits=40, train_size=0.15, random_state=42)
for train_index, test_index in ss.split(X):
    regr = OLS( Y.[train_index], X.[train_index]).fit()
    train_score_AIC = regr.aic

有没有办法添加类似的东西

    test_score_AIC = regr.test(Y.[test_index], X.[test_index]).aic

【问题讨论】:

    标签: python scikit-learn regression


    【解决方案1】:

    这些度量中的大多数是模型/结果类中内置的拟合优度度量,仅适用于训练数据或估计样本。 其中许多测量没有很好地定义为样本外、预测准确性测量,或者我从未见过适合这种情况的定义。

    具体来说,loglike是模型的一种方法,只能在附加的训练样本上进行评估。

    相关问题:

    https://github.com/statsmodels/statsmodels/issues/2572 https://github.com/statsmodels/statsmodels/issues/1282

    可以部分解决 statsmodels 的当前限制,但目前没有一个支持和单元测试。

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 2023-02-15
      • 2022-06-08
      • 2015-07-22
      • 1970-01-01
      • 2019-09-08
      • 2015-11-18
      • 2018-10-17
      • 2021-02-28
      相关资源
      最近更新 更多