我想对特定分类器使用 GridSearchCV(n_jobs > 1),但我有来自另一个来源的 10 倍交叉验证的折叠信息。有没有办法输入已经分成折叠的数据,而不是使用 GridSearchCV 创建的折叠。
谢谢!
我想对特定分类器使用 GridSearchCV(n_jobs > 1),但我有来自另一个来源的 10 倍交叉验证的折叠信息。有没有办法输入已经分成折叠的数据,而不是使用 GridSearchCV 创建的折叠。
谢谢!
您可以创建自定义 CV 迭代器,例如通过 LeaveOneGroupOut或LeaveOneGroupOut的灵感来实现您感兴趣的结构。
或者,您可以准备自己的预计算折叠,编码为整数数组(表示和之间的样本索引0
)n_samples - 1
,然后将该 CV 迭代器作为和实用程序的cv
参数传递:cross_val_score
GridSearchCV
>>> 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 ])