- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在使用 cross_validation.KFold(n, n_folds=folds) 之后,我想访问用于训练和测试单折的索引,而不是遍历所有折。
让我们来看示例代码:
from sklearn import cross_validation
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = cross_validation.KFold(4, n_folds=2)
>>> print(kf)
sklearn.cross_validation.KFold(n=4, n_folds=2, shuffle=False,
random_state=None)
>>> for train_index, test_index in kf:
我想像这样访问 kf 中的第一个折叠(而不是 for 循环):
train_index, test_index in kf[0]
这应该只返回第一个折叠,但我得到了错误:“TypeError: 'KFold' object does not support indexing”
我想要的输出:
>>> train_index, test_index in kf[0]
>>> print("TRAIN:", train_index, "TEST:", test_index)
TRAIN: [2 3] TEST: [0 1]
链接:http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.KFold.html
如何只检索一次训练和测试的索引,而无需遍历整个 for 循环?
最佳答案
您走在正确的轨道上。您现在需要做的就是:
kf = cross_validation.KFold(4, n_folds=2)
mylist = list(kf)
train, test = mylist[0]
kf
实际上是一个生成器,它在需要时才计算训练-测试拆分。这提高了内存使用率,因为您没有存储不需要的项目。制作 KFold
对象的列表会强制它使所有值都可用。
这里有两个很好的 SO 问题来解释什么是生成器:one和 two
2018 年 11 月编辑
自 sklearn 0.20 以来,API 发生了变化。一个更新的例子(针对 py3.6):
from sklearn.model_selection import KFold
import numpy as np
kf = KFold(n_splits=4)
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
X_train, X_test = next(kf.split(X))
In [12]: X_train
Out[12]: array([2, 3])
In [13]: X_test
Out[13]: array([0, 1])
关于python - sklearn Kfold 访问单折而不是 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380636/
更新 我上传了一个虚拟数据集,链接 here . df.head() : 它有 4类总共和df.object.value_counts() : human 23 car 13 cat
我正在尝试在 python 中执行分层 K 折验证,并且我在文档中阅读了以下内容: 我不太清楚这是什么意思。有人可以向我解释一下 cross_val_score 到底什么时候使用 Stratified
我有一个表单数据框,df: cat_var_1 cat_var_2 num_var_1 0 Orange Monkey 34 1 Bana
假设我有一个包含两列的数据集。我已经在我的数据集上建立了线性回归模型,现在我的问题是如何检查我的模型的准确性。 我发现我的问题的答案是在我的数据集上应用 K-fold。我知道 K-fold 是如何工作
我有一个数据集,为简单起见,假设它有 1000 个样本(每个样本都是一个向量)。 我想拆分我的数据以进行交叉验证、训练和测试,不是随机1,例如,如果我想要 4 折交叉验证,我应该得到: fold1:
当您在 Twitter 上转推或收藏时,包含该推文的 div 的一 Angular 会出现一个带图标的彩色小三 Angular 形。我已经从 Twitter 复制了 CSS 和 sprite 表,并试
我是一名优秀的程序员,十分优秀!