Python 使用指定数量的培训数据进行交叉验证? 客观的

Python 使用指定数量的培训数据进行交叉验证? 客观的,python,machine-learning,scikit-learn,cross-validation,k-fold,Python,Machine Learning,Scikit Learn,Cross Validation,K Fold,我想执行k-fold交叉验证,但不是使用k-1数据集进行训练和k数据集进行测试,我想确定训练数据的数量,就像train\u test\u split的train\u size一样。然后将剩余部分作为测试数据 确切地说,我有一个二进制分类数据集,在执行交叉val时,我希望每个类有10个实例 期望函数 假设我想做5倍的CV: cross\u val\u得分(估计器=我的模型,X,y,cv=5,训练规模=20) 当然,在这个例子中,我的X,y应该有>=100个实例 我的尝试 我只是手工制作的。我能得到

我想执行k-fold交叉验证,但不是使用k-1数据集进行训练和k数据集进行测试,我想确定训练数据的数量,就像
train\u test\u split
train\u size
一样。然后将剩余部分作为测试数据

确切地说,我有一个二进制分类数据集,在执行交叉val时,我希望每个类有10个实例

期望函数 假设我想做5倍的CV:

cross\u val\u得分(估计器=我的模型,X,y,cv=5,训练规模=20)

当然,在这个例子中,我的X,y应该有>=100个实例

我的尝试 我只是手工制作的。我能得到的最接近的结果是迭代:

for _ in range (5):    
  X_tr, X_te, y_tr, y_te = train_test_split(X, y, train_size=20, stratified=y)  
但这会随机选取数据,并可能导致两个序列数据集相似,而且它不适应cv

注 是的,这将导致某些数据集不用于训练集,但这正是我希望在当前工作中实现的目标

是否有任何python函数提供此功能?

您仍然可以使用,但需要附加逻辑

确定测试数据量:
测试量=总测试量*测试量大小

确定拆分的金额
n\u拆分=总金额//test\u金额

使用kFold:

kf = KFold(n_splits=n_splits)
for train_index, test_index in kf.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]