x_tu = data_cls_tu.iloc[:,1:].valuesy_tu = data_cls_tu.iloc[:,0].valuesclassifier = DecisionTreeClassifier()parameters = [{"max_depth": [3,None], "min_samples_leaf": np.random.randint(1,9), "criterion": ["gini","entropy"]}]randomcv = RandomizedSearchCV(estimator=classifier, param_distributions=parameters, scoring='accuracy', cv=10, n_jobs=-1, random_state=0)randomcv.fit(x_tu, y_tu)---------------------------------------------------------------------------AttributeError Traceback (most recent call last)<ipython-input-17-fa8376cb54b8> in <module>() 11 scoring='accuracy', cv=10, n_jobs=-1, 12 random_state=0)---> 13 randomcv.fit(x_tu, y_tu)~\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py in fit(self, X, y, groups, **fit_params) 616 n_splits = cv.get_n_splits(X, y, groups) 617 # Regenerate parameter iterable for each fit--> 618 candidate_params = list(self._get_param_iterator()) 619 n_candidates = len(candidate_params) 620 if self.verbose > 0:~\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py in __iter__(self) 236 # in this case we want to sample without replacement 237 all_lists = np.all([not hasattr(v, "rvs")--> 238 for v in self.param_distributions.values()]) 239 rnd = check_random_state(self.random_state) 240 AttributeError: 'list' object has no attribute 'values'
你好,我在使用RandomSearchCV的fit方法时一直遇到错误。
当我使用GridSearchCV时它是正常工作的,但GridSearchCV花了5个小时才完成。
x_tu和y_tu都是numpy.ndarray类型。
回答:
param_distributions
必须是dict
对象(文档),但你传递的是包含单个dict
的列表。去掉最外层的方括号后应该就能正常工作了。
应该像这样:
parameters = {"max_depth": [3,None], "min_samples_leaf": [np.random.randint(1,9)], "criterion": ["gini","entropy"]}