首页 文章

网格搜索背后的理论与交叉验证

提问于
浏览
1

感谢堆栈溢出的帮助,我成功地为我的决策树模型实现了交叉验证的网格搜索 .

dtc = DecisionTreeClassifier()

parameter_grid = {'splitter': ['best', 'random'], 
        'min_samples_split': [15, 16, 17, 18, 19,20, 21, 22, 23, 24, 25,],
        'min_samples_leaf': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,],
        'criterion': ['gini', 'entropy'],
        'random_state': [0]}

cross_validation = StratifiedKFold(n_splits=10)

grid_search = GridSearchCV(dtc, param_grid=parameter_grid, cv=cross_validation)

grid_search.fit(x, y)

我的问题涉及其背后的理论 .

我知道k-fold交叉验证将我的整个数据集分成 k 训练数据集和相应的验证数据集 .

然后,我假设,我的代码做了类似的事情:

  • 应用网格搜索 k 次,即在k-folds的每个训练数据集上 .

  • 每个 k -fold的网格搜索的最佳参数应用于相应的验证数据集 .

  • k -折叠的每个验证数据集计算验证错误

到目前为止这是正确的吗?

我使用grid_search.best_score_和grid_search.best_params_获得的值是什么?这些是步骤3中的最佳验证错误(grid_search.best_score_)以及网格搜索的相应最佳值(grid_search.best_params_)还是某个平均值?

任何帮助或澄清都非常欢迎!

1 回答

  • 0

    对于网格搜索的每种可能组合(在您的情况下为2 * 11 * 10 * 2 * 1 = 440),列车数据集被分割k次,并且每个超参数组合的k个验证集上的 average 错误正在计算 . 具有最低平均误差的组合是 grid_search.best_params_ .

    例如:

    {'splitter': 'best', 
            'min_samples_split': 20,
            'min_samples_leaf': 9,
            'criterion':  'entropy',
            'random_state': 0}
    

相关问题