【发布时间】:2020-11-17 16:50:40
【问题描述】:
我正在尝试使用 sklearn GridSearchCV 执行 K 折交叉验证来选择用于 KernelDensity 估计的带宽。
当我实现grid.fit(data) 时,我收到错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Users\mubar\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sklearn\utils\validation.py", line 73, in inner_f
return f(**kwargs)
File "C:\Users\mubar\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sklearn\model_selection\_search.py", line 736, in fit
self._run_search(evaluate_candidates)
File "C:\Users\mubar\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sklearn\model_selection\_search.py", line 1188, in _run_search
evaluate_candidates(ParameterGrid(self.param_grid))
File "C:\Users\mubar\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sklearn\model_selection\_search.py", line 714, in evaluate_candidates
in product(candidate_params,
File "C:\Users\mubar\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sklearn\model_selection\_split.py", line 80, in split
for test_index in self._iter_test_masks(X, y, groups):
AttributeError: 'numpy.ndarray' object has no attribute '_iter_test_masks'
这是我的代码:
import numpy as np
from sklearn.model_selection import GridSearchCV, LeaveOneOut
train = np.random.rand(12,2)
target = np.array([0,0,1,2,3,3,3,4,5,5,6,6])
bw = np.linspace(0.01,0.1,10)
grid = GridSearchCV(KernelDensity(kernel='gaussian'),
{'bandwidth': bw},
cv=LeaveOneOut)
grid.fit(train,target[:,None])
【问题讨论】:
-
为什么是
target[:,None](尽管问题仍然存在,即使只是target)? -
只是为了使数组成为二维的,正如我在其他示例中看到的那样,但你是对的,没有必要。
标签: numpy scikit-learn cross-validation kernel-density gridsearchcv