5

我想对特定分类器使用 GridSearchCV(n_jobs > 1),但我有来自另一个来源的 10 倍交叉验证的折叠信息。有没有办法输入已经分成折叠的数据,而不是使用 GridSearchCV 创建的折叠。

谢谢!

4

1 回答 1

8

您可以创建自定义 CV 迭代器,例如通过 LeaveOneGroupOutLeaveOneGroupOut的灵感来实现您感兴趣的结构。

或者,您可以准备自己的预计算折叠,编码为整数数组(表示和之间的样本索引0n_samples - 1,然后将该 CV 迭代器作为和实用程序的cv参数传递:cross_val_scoreGridSearchCV

>>> X, y = make_classification(n_samples=10)
>>> import numpy as np
>>> from sklearn.datasets import make_classification
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import cross_val_score
>>> cv_splits = [
...     (np.array([0, 1, 2, 3]), np.array([4, 5, 6])),
...     (np.array([1, 2, 3, 4]), np.array([5, 6, 7])),
...     (np.array([5, 6, 8, 9]), np.array([1, 2, 3, 4])),
... ]
>>> cross_val_score(LogisticRegression(), X, y, cv=cv_splits)
array([1.        , 0.33333333, 0.75      ])
于 2013-08-16T16:27:05.213 回答