擅长:python、mysql、java
<p>你在正确的轨道上。你现在要做的就是:</p>
<pre><code>kf = cross_validation.KFold(4, n_folds=2)
mylist = list(kf)
train, test = mylist[0]
</code></pre>
<p><code>kf</code>实际上是一个生成器,在需要时才计算列车测试拆分。这提高了内存使用率,因为您不存储不需要的项。创建<code>KFold</code>对象的列表将强制该对象使所有值都可用。</p>
<p>这里有两个很好的问题可以解释生成器是什么:<a href="https://stackoverflow.com/questions/1756096/understanding-generators-in-python">one</a>和<a href="https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python?rq=1">two</a></p>
<hr/>
<p>2018年11月编辑</p>
<p>自sklearn 0.20以来,API已经发生了变化。更新的示例(对于py3.6):</p>
<pre><code>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])
</code></pre>