代码之家  ›  专栏  ›  技术社区  ›  user287629

目前尚不清楚“gridsearchcv”函数如何分解培训和测试集。

  •  0
  • user287629  · 技术社区  · 7 年前

    目前还不清楚函数“gridsearchcv”如何分解培训和测试集。
    共67959行,带有标志。 默认情况下,“train-test-split”功能分为75%的训练和25%的测试。
    在培训50969和测试16990行与标志。 我在函数“t_scorer”中打印数组y_pred的长度,它变为5662。 一路上,我打印了混乱的矩阵。 如果将矩阵中的所有元素相加,得到16990。 结果表明,测试集再次被划分为训练集和测试集。
    我做错什么了? 我要测试的是16990套,训练50969套。

    [[ 763  891]
     [1216 2792]]
    5662
    [[2785  525]
     [1578 6440]]
    11328
    

    混淆矩阵的值

    _scorer = make_scorer(T_scorer)
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
    clf = RandomForestClassifier()
    grid_searcher = GridSearchCV(clf, parameter_grid, verbose=20, scoring=_scorer)
    grid_searcher.fit(X_test, y_test)
    clf_best = grid_searcher.best_estimator_
    print('Best params = ', clf_best.get_params())
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   CoMartel    7 年前

    默认情况下,gridsearchcv执行三次验证,这意味着它将数据拆分为三个相等的部分(1、2、3),并运行以下序列:

    • 在1,2上训练-->测试EN 3
    • 在2、3上训练-->在1上测试
    • 在1、3上训练-->在2上测试

    您不必在这里使用列车测试拆分:只需提供x_列车、y_列车到gridsearchcv并让它工作即可。

    您还可以查看文档的“cv”部分: http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html

    编辑:下面是注释中的最终代码:

    grid_searcher = GridSearchCV(clf, param_grid=parameter_grid, cv=StratifiedKFold(shuffle =True, random_state = 42))