【问题标题】:cross validation in sklearn with given fold splitssklearn中给定折叠拆分的交叉验证
【发布时间】:2014-10-22 16:31:16
【问题描述】:

我正在学习如何在 Python 中将 Lasso 和 Ridge 与 sklearn 结合使用。我得到了列中的褶皱。我想根据 5 折交叉验证找到最佳参数。

我的数据如下所示:

    mpg cylinders  displacement  horsepower  weight  acceleration  origin  fold
0   18          8           307         130    3504          12.0       1     3
1   15          8           350         165    3693          11.5       1     0
2   18          8           318         150    3436          11.0       1     2
3   16          8           304         150    3433          12.0       1     2
4   17          8           302         140    3449          10.5       1     3


reg_para = [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100]

mpg 是 y/target 变量,其他列是预测变量。最后一列包含折叠。我想运行 Lasso and Ridge 并找到最佳参数。我遇到的问题是将指定的折叠合并到交叉验证中。这是我到目前为止所拥有的(对于 Lasso):

from sklearn.linear_model import Lasso, LassoCV
lasso_model = LassoCV(cv=5, alphas=reg_para)
lasso_fit = lasso_model.fit(X,y)

有没有一种简单的方法来合并折叠拆分?非常感谢任何帮助

【问题讨论】:

  • 这是熊猫数据框吗?

标签: python scikit-learn


【解决方案1】:

如果您的数据在 pandas 数据框中,那么您需要做的就是访问该列

fold_labels = df["fold"]
from sklearn.cross_validation import LeaveOneLabelOut
cv = LeaveOneLabelOut(fold_labels)

lasso_model = LassoCV(cv=cv, alphas=reg_para)

因此,如果您在数组 fold_labels 中获得折叠标签,则可以使用 LeaveOneLabelOut(对于非功能性代码,抱歉。不过,阐明这个想法就足够了。)

【讨论】:

    猜你喜欢
    • 2014-07-27
    • 2019-03-18
    • 2016-04-13
    • 1970-01-01
    • 2012-12-31
    • 2021-02-17
    • 2016-03-22
    • 2019-06-21
    • 2021-03-18
    相关资源
    最近更新 更多