【发布时间】:2017-08-27 20:44:39
【问题描述】:
我正在使用ShuffleSplit 打乱数据,但发现有错误
TypeError Traceback (most recent call last)
<ipython-input-36-192f7c286a58> in <module>()
1 # Fit the training data to the model using grid search
----> 2 reg = fit_model(X_train, y_train)
3
4 # Produce the value for 'max_depth'
5 print "Parameter 'max_depth' is {} for the optimal model.".format(reg.get_params()['max_depth'])
<ipython-input-34-18b2799e585c> in fit_model(X, y)
32
33 # Fit the grid search object to the data to compute the optimal model
---> 34 grid = grid.fit(X, y)
35
36 # Return the optimal model after fitting the data
/Library/Python/2.7/site-packages/sklearn/grid_search.pyc in fit(self, X, y)
827
828 """
--> 829 return self._fit(X, y, ParameterGrid(self.param_grid))
830
831
/Library/Python/2.7/site-packages/sklearn/grid_search.pyc in _fit(self, X, y, parameter_iterable)
571 self.fit_params, return_parameters=True,
572 error_score=self.error_score)
--> 573 for parameters in parameter_iterable
574 for train, test in cv)
575
/Library/Python/2.7/site-packages/sklearn/externals/joblib/parallel.pyc in __call__(self, iterable)
756 # was dispatched. In particular this covers the edge
757 # case of Parallel used with an exhausted iterator.
--> 758 while self.dispatch_one_batch(iterator):
759 self._iterating = True
760 else:
/Library/Python/2.7/site-packages/sklearn/externals/joblib/parallel.pyc in dispatch_one_batch(self, iterator)
601
602 with self._lock:
--> 603 tasks = BatchedCalls(itertools.islice(iterator, batch_size))
604 if len(tasks) == 0:
605 # No more tasks available in the iterator: tell caller to stop.
/Library/Python/2.7/site-packages/sklearn/externals/joblib/parallel.pyc in __init__(self, iterator_slice)
125
126 def __init__(self, iterator_slice):
--> 127 self.items = list(iterator_slice)
128 self._size = len(self.items)
129
/Library/Python/2.7/site-packages/sklearn/grid_search.pyc in <genexpr>((parameters,))
572 error_score=self.error_score)
573 for parameters in parameter_iterable
--> 574 for train, test in cv)
575
576 # Out is a list of triplet: score, estimator, n_test_samples
TypeError: 'ShuffleSplit' object is not iterable
它显示了警告
/Library/Python/2.7/site-packages/sklearn/cross_validation.py:44:DeprecationWarning:此模块在 0.18 版中已弃用,取而代之的是 model_selection 模块,所有重构的类和函数都移入其中。另请注意,新的 CV 迭代器的接口与此模块的接口不同。此模块将在 0.20 中删除。 “此模块将在 0.20 中删除。”,弃用警告) /Library/Python/2.7/site-packages/sklearn/grid_search.py:43:DeprecationWarning:此模块在 0.18 版中已弃用,取而代之的是 model_selection 模块,所有重构的类和函数都移入其中。此模块将在 0.20 中删除。 弃用警告)
代码会导致错误
from sklearn.metrics import make_scorer
from sklearn.tree import DecisionTreeRegressor
from sklearn.grid_search import GridSearchCV
以下不是
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import make_scorer
当前 scikit-learn 版本为 0.18.1。
这是怎么发生的?
【问题讨论】:
标签: python scikit-learn grid-search