Model 单独的超参数/特征选择和模型选择cv与嵌套交叉验证(cv)

Model 单独的超参数/特征选择和模型选择cv与嵌套交叉验证(cv),model,cross-validation,feature-selection,hyperparameters,Model,Cross Validation,Feature Selection,Hyperparameters,我意识到嵌套交叉验证可以用来减少超参数时的偏差 调整与型号选择相结合。然而,我想知道是否有可能执行 使用网格搜索cv作为单独步骤进行超参数调整或功能选择 在整个训练数据集上(整个数据集分为训练集和测试集)。这将确定训练数据集的最佳参数集(参见下面的代码) 然后,可以将最佳超参数或功能用于后续的交叉验证 具有上一步中确定的最佳超参数或特征的新实例化模型 我想知道这是否比嵌套交叉验证更可取,因为这是一个发现 最佳超参数和特征集非常重要。因为模型被重新实例化了 在第二次交叉验证(用于模型选择)期间,

我意识到嵌套交叉验证可以用来减少超参数时的偏差 调整与型号选择相结合。然而,我想知道是否有可能执行 使用网格搜索cv作为单独步骤进行超参数调整或功能选择 在整个训练数据集上(整个数据集分为训练集和测试集)。这将确定训练数据集的最佳参数集(参见下面的代码)

然后,可以将最佳超参数或功能用于后续的交叉验证 具有上一步中确定的最佳超参数或特征的新实例化模型

我想知道这是否比嵌套交叉验证更可取,因为这是一个发现 最佳超参数和特征集非常重要。因为模型被重新实例化了 在第二次交叉验证(用于模型选择)期间,不应出现过度拟合

此处不考虑测试集,因为一旦完成模型选择,就可以选择最佳模型 应用于测试集

我不知道这种做法是否合理?感谢您的帮助

from sklearn.model_selection import GridSearchCV
from sklearn import svm
from sklearn.svm import LinearSVC
import numpy as np

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

SVCpipe = Pipeline([('scale', StandardScaler()),
                   ('SVC',LinearSVC(class_weight = 'balanced',  dual=False, random_state = np.random.seed(7), tol=1e-05))])  #Prefer dual=False when n_samples > n_features.

param_grid = {'SVC__C':np.arange(0.01,100,10)}

X_train = cardioDataCal_Eurosc_II_Train.iloc[:, 0:18]

linearSVC = GridSearchCV(SVCpipe, param_grid,cv=3,return_train_score=True, refit=True,verbose=2, scoring='f1') #https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
%time linearSVC.fit(X_train, cardioDataCal_Eurosc_II_TrainLabel.values.ravel())
#print(linearSVC.best_estimator_)

print(linearSVC.best_estimator_)

我投票结束这个问题,因为它不是关于中定义的编程,而是关于ML理论和/或方法-请参阅机器学习中的介绍和说明。

Cross validation of entire training dataset using 
best hyperparameters and features identified in the above section.