【发布时间】:2017-04-17 04:59:24
【问题描述】:
为了进行 K 折验证,我想对一个 numpy 数组进行切片,以便生成原始数组的视图,但删除每个第 n 个元素。
例如:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
如果n = 4 那么结果是
[1, 2, 4, 5, 6, 8, 9]
注意:numpy 的要求是因为它被用于固定依赖关系的机器学习任务。
【问题讨论】:
-
对于交叉验证的用例,这种方法看起来很可怕。然后有一些关于数据顺序的隐藏假设。一般来说,我更喜欢一些基于 shuffle/random_permutation 的方法,但也会坚持scikit-learn 中可用的功能,因为还有更强大的东西,比如分层采样(如果需要)。旁注:清理你的标签,因为
fold(函数式编程)和k(编程语言)是错误的。 -
我同意萨沙。特别是,看看交叉验证迭代器。 scikit-learn.org/stable/modules/…
-
@sascha 我同意使用现有的库会更好,但是我应该提到我只能使用 numpy 作为依赖项,因为这是机器学习任务对不起!为了实现随机性,我使用
np.random.shuffle对行进行洗牌。 -
我明白了。但是在洗牌之后,你是每 4 次取还是前 N/4 取值都没有关系。后者可能更容易实现。