python - scikit-learn分区数据中的LassoCV如何实现?

标签 python scikit-learn regression cross-validation

我在 sklearn 中使用套索方法执行线性回归。

根据他们的指导以及我在其他地方看到的指导,与其简单地对所有训练数据进行交叉验证,不如将其拆分为更传统的训练集/验证集分区。

套索因此在训练集上进行训练,然后根据验证集交叉验证的结果调整超参数 alpha。最后,在测试集上使用接受的模型来给出一个真实的 View ,哦它在现实中的表现。将关注点分开是防止过度拟合的一种预防措施。

实际问题

Lasso CV 是否符合上述协议(protocol),或者它只是以某种方式在相同数据和/或相同轮次 CV 中训练模型参数和超参数?

谢谢。

最佳答案

如果您将 sklearn.cross_validation.cross_val_scoresklearn.linear_model.LassoCV 对象一起使用,那么您正在执行嵌套交叉验证cross_val_score 将根据您指定折叠的方式将您的数据分为训练集和测试集(这可以通过 sklearn.cross_validation.KFold 等对象来完成)。训练集将被传递给 LassoCV,后者本身会执行另一次数据拆分以选择正确的惩罚。这似乎与您正在寻找的设置相对应。

import numpy as np
from sklearn.cross_validation import KFold, cross_val_score
from sklearn.linear_model import LassoCV

X = np.random.randn(20, 10)
y = np.random.randn(len(X))

cv_outer = KFold(len(X), n_folds=5)
lasso = LassoCV(cv=3)  # cv=3 makes a KFold inner splitting with 3 folds

scores = cross_val_score(lasso, X, y, cv=cv_outer)

回答:LassoCV不会为你做所有的工作,你必须结合cross_val_score使用它来获得你想要什么。这同时也是实现此类对象的合理方式,因为我们也可能只对拟合超参数优化 LassoCV 感兴趣,而不必直接在另一组保留数据上对其进行评估。

关于python - scikit-learn分区数据中的LassoCV如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233981/

相关文章:

python - 在 Python 中执行潜在类分析的正确方法是什么?

python - 为什么这条线性回归线不是直线?

r - 如何使用biglm包获取VIF?

python - Pyramid Postgresql 连接问题

python - 使用规则随机生成列表元素

python - 类型错误 : unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'

r - R : Help from the ground up 中的时间序列回归

python - One-hot 编码的逻辑回归

python - 强制从python中删除windows目录

python - [Django]如何解决以下错误(在views.py中)?