有没有办法在sklearn实施的10个Kfolds中的8个中使用列车子集来训练模型?
我想将我的数据分成三个子集:训练,验证和测试(这可以通过使用 train_test_split
两次来完成,我认为......) .
训练集用于拟合模型,验证集用于调整参数,测试集用于评估最终模型的泛化误差 .
但是我想知道是否有一种方法只需要训练10次折叠中的8次并得到错误/准确度,在1倍上验证它并最终在最后一次测试中测试它也会得到错误/准确性 .
请参阅下面的我的想法:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=1)
clf = tree.DecisionTreeClassifier(criterion = "entropy", max_depth = 3)
kf = KFold(n_splits=10, shuffle = False, random_state = 0) #define number of splits
kf.get_n_splits(X) #to check how many splits will be done.
for train, test in kf.split(X_train, y_train):
2 回答
从您的问题来看,我理解的是您想要省略一个或多个子集 . 在这种情况下,您可以使用Leave One Out (LOO)或Leave P Out (LPO)保留一个或多个数据子集 .
你应该改变这一行
至
准确地得到你想要的东西 . 第一个
train_test_split
在0.8,0.2
分裂为火车,测试 . 接下来是在0.1,0.1
test中分割0.2
,val .然后:
根据此报告,您可以检查是否继续测试数据或更改超参数,以便在验证集上获得更高的分数 .