Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sklearn:分组数据的交叉验证_Python_Scikit Learn_Cross Validation - Fatal编程技术网

Python Sklearn:分组数据的交叉验证

Python Sklearn:分组数据的交叉验证,python,scikit-learn,cross-validation,Python,Scikit Learn,Cross Validation,我正在尝试对分组数据实施交叉验证方案。我希望使用GroupKFold方法,但我一直得到一个错误。我做错了什么? 代码(与我使用的代码略有不同——我有不同的数据,所以我有一个更大的n_分割,但其他所有符号都是相同的) 错误: Traceback (most recent call last): File "<ipython-input-143-11d785056a08>", line 8, in <module> result = grid_search.fit(x, y

我正在尝试对分组数据实施交叉验证方案。我希望使用GroupKFold方法,但我一直得到一个错误。我做错了什么? 代码(与我使用的代码略有不同——我有不同的数据,所以我有一个更大的n_分割,但其他所有符号都是相同的)

错误:

Traceback (most recent call last):

File "<ipython-input-143-11d785056a08>", line 8, in <module>
result = grid_search.fit(x, y)

File "/home/student/anaconda/lib/python3.5/site-packages/sklearn/grid_search.py", line 813, in fit
return self._fit(X, y, ParameterGrid(self.param_grid))

 File "/home/student/anaconda/lib/python3.5/site-packages/sklearn/grid_search.py", line 566, in _fit
n_folds = len(cv)

TypeError: object of type 'generator' has no len()

也不行。然后,错误消息为:

'GroupKFold' object is not iterable
GroupKFold
函数一次生成一对训练和测试索引。您应该调用拆分值上的
list
,将它们全部放入一个列表中,以便计算长度:

gkf = list(GroupKFold( n_splits=3).split(x,y,group))

您有什么版本的
sklearn
GridSearchCV
cv
参数通常应该使用生成器。它似乎可以工作。然而,我尝试了
gkf=list(GroupKFold(n_splits=3)、split(x,y,group))
gkf=list(GroupKFold(n_splits=3)、split(x[:-100]、y[:-100]、group[:-100))
两种情况下,都用
grid\u search.fit(x,y)
对其进行训练。这两种方法运行平稳,结果几乎相同,但我预计第二种方法会失败(因为它在gkf上的元素比在fit上的元素少)。我如何检查它的行为呢?还尝试了
gkf=list(GroupKFold(n_splits=3)。split(x,y,group))
使用
grid\u search.fit(x[:100],y[:100])
并且它确实引发了一个奇怪的错误
索引器:索引100超出了大小100的界限

gkf = GroupKFold( n_splits=3)
'GroupKFold' object is not iterable
gkf = list(GroupKFold( n_splits=3).split(x,y,group))