目前还不清楚函数“GridSearchCV”是如何分解训练集和测试集的

2024-04-29 15:58:47 发布

您现在位置:Python中文网/ 问答频道 /正文

尚不清楚“GridSearchCV”函数如何分解训练集和测试集。
共有67959条带标志的线路。 默认情况下,“train\u test\u split”功能分为75%的训练和25%的测试。
在培训50969和测试16990行标志。 我在函数“T\u scorer”中打印数组y\u 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())

Tags: 函数test标志train矩阵params线路grid
1条回答
网友
1楼 · 发布于 2024-04-29 15:58:47

默认情况下,GridSearchCV执行3倍验证,这意味着它将数据分成3等份(1、2、3),并按以下顺序运行:

  • 在1,2上训练>;测试en 3
  • 在2,3上训练>;在1上测试
  • 在1,3上训练>;在2上测试

您不必在这里使用train test split:只需将X\u train、y\u train提供给gridsearchCV并让它工作

您还可以查看doc的“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))

相关问题 更多 >