![](/img/trans.png)
[英]Combining RandomizedSearchCV (or GridSearcCV) with LeaveOneGroupOut cross validation in scikit-learn
[英]Using hold-out-set for validation in RandomizedSearchCV in scikit-learn?
当验证数据已经作为保留集存在时,是否有任何方法可以从 scikit-learn 执行 RandomizedSearchCV? 我试图连接训练和验证数据并定义cv
参数以准确拆分两个集合的组合位置,但找不到 RandomizedSearchCV 接受的正确语法。
scikit-learn 文档 说:
cv : int, cross-validation generator or an iterable, optional
Determines the cross-validation splitting strategy.
Possible inputs for cv are:
- None, to use the default 3-fold cross validation,
- integer, to specify the number of folds in a `(Stratified)KFold`,
- An object to be used as a cross-validation generator.
- An iterable yielding train, test splits.
我希望最后一个选项应该可以工作,但我不知道我必须以哪种格式交出它。
任何帮助表示赞赏!
假设您在train_indices
中有训练样本的索引,在test_indices
中有测试样本的索引。 然后,将这些作为包装在列表中的元组传递给RandomizedSearchCV
的cv
参数就足够了。 一个 MWE 来展示:
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV
X, y = make_classification(n_samples=10)
param_distributions = {
'n_estimators': [10, 20, 30, 40]
}
train_indices = [0, 1, 2, 3, 4]
test_indices = [5, 6, 7, 8, 9]
cv = [(train_indices, test_indices)]
search = RandomizedSearchCV(
RandomForestClassifier(),
param_distributions=param_distributions,
cv=cv,
n_iter=2
)
search.fit(X, y)
这将始终在相同样本上训练和测试估计器。 如果您的数据存储pandas
数据帧中,例如df
,请使用df.index.values
获取您需要的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.