我有一个关于超参数调优和寻找最佳拟合模型的问题(为特定的数据集寻找最合适的模型)。我被建议将我的数据分成三组,而不是两组(仅限于培训和测试):
_Training
_Validation
_Testing
在训练集上使用网格搜索(交叉验证),经过网格搜索(交叉验证)后,可以使用另一组“验证集”来测试模型的泛化能力(对未见数据的性能),之后可能会更改一些参数。但是,我不知道如何使用验证集来测试我的模型的泛化能力。
我的守则:
dt = DecisionTreeClassifier(random_state=12)
max_depth = [int(d) for d in np.linspace(1,20,20)]
max_features = ['log2', 'sqrt','auto']
criterion = ['gini', 'entropy']
min_samples_split = [2, 3, 50, 100]
min_samples_leaf = [1, 5, 8, 10]
grid_param_dt = dict(max_depth=max_depth, max_features=max_features, min_samples_split=min_samples_split, min_samples_leaf=min_samples_leaf, criterion=criterion)
gd_sr_dt = GridSearchCV(estimator=dt, param_grid=grid_param_dt, scoring='accuracy', cv=10)
gd_sr_dt.fit(x_train, y_train)
best_parameters_dt = gd_sr_dt.best_params_
print(best_parameters_dt)我得到了如下的超参数调优:
{'criterion': 'gini', 'max_depth': 9, 'max_features': 'log2', 'min_samples_leaf': 10, 'min_samples_split': 50}如何利用验证集测试具有这些参数的模型的泛化能力?
发布于 2021-01-06 08:47:29
这个问题还不清楚。但是,如果您的意思是您需要一个验证数据集,那么您已经在这样做了。通过每个可能的参数组合,您将创建10个折叠(通过GridSearchCV),这意味着10个折叠数据集,这些数据集基本上用于评估模型的泛化能力,使用选定的参数对未见数据进行评估。
如果您的意思是您需要另一个数据集并对模型进行验证,那么我个人遵循以下两个选项之一:
通过选择preds=model.predict(X_val).
https://stackoverflow.com/questions/65590890
复制相似问题