我正在学习如何在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和Ridge并找到最佳参数。我遇到的问题是在交叉验证中加入指定的折叠。这是我到目前为止(对于Lasso):
from sklearn.linear_model import Lasso, LassoCV
lasso_model = LassoCV(cv=5, alphas=reg_para)
lasso_fit = lasso_model.fit(X,y)
是否有一种简单的方法来合并折叠分裂?非常感谢任何帮助
答案 0 :(得分: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
(对于非功能性代码而言很抱歉。虽然这应该足以阐明这个想法。)