python - TypeError: 'numpy.ndarray' 对象在为逻辑回归执行 RandomizedSearchCV 时不可调用
问题描述
作为 python 的新手,无法弄清楚为什么在 RandomizedSearchCV 中调用数组对象。知道如何解决/解决此错误吗?
X_train 和 y_train 是 numpy ndarray。
tuned_parameters = pd.DataFrame({'C': [10**i for i in range(-4,4,2)]})
#Using RandomizedCV
model = RandomizedSearchCV(LogisticRegression(), tuned_parameters,
scoring = 'f1', cv=5, n_jobs=6, random_state = 12)
model.fit(X_train, y_train)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-144-9f33fbdbb7e4> in <module>()
8 #Using RandomizedCV
9 model = RandomizedSearchCV(LogisticRegression(), tuned_parameters1,
n_iter = 10, scoring = 'f1', cv=5, n_jobs=6)
---> 10 model.fit(X_train, y_train)
11 #model.predict(X_test)
12 print(model.best_estimator_)
~\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
TypeError: 'numpy.ndarray' object is not callable
解决方案
不要使用熊猫。
从文档:
param_distributions : dict 字典,参数名称(字符串)作为键和分布或要尝试的参数列表。发行版必须提供 rvs 抽样方法(例如来自 scipy.stats.distributions 的那些)。如果给出一个列表,则对其进行均匀采样。
你需要定义tuned_parameters
不同的。
用这个:
tuned_parameters = {"C": [10**i for i in range(-4,4,2)] }