我想在MultinomialNB(1)上进行随机化参数优化。现在我的参数有3个,而不是一个值,因为它是'class_prior',而且我有3个类。Scikit学习RandomizedSearchCV不适用于MultinomialNB中的class_prior
from sklearn.naive_bayes import MultinomialNB
from sklearn.grid_search import RandomizedSearchCV
from scipy.stats import uniform
tuned_parameters = {'class_prior': [uniform.rvs(0,3), uniform.rvs(0,3),
uniform.rvs(0,3)]}
clf = RandomizedSearchCV(MultinomialNB(), tuned_parameters, cv=3,
scoring='f1_micro', n_iter=10)
然而,错误日志的样子:
...
File "/home/mark/Virtualenvs/python3env2/lib/python3.5/site-
packages/sklearn/naive_bayes.py", line 607, in fit
self._update_class_log_prior(class_prior=class_prior)
File "/home/mark/Virtualenvs/python3env2/lib/python3.5/site-
packages/sklearn/naive_bayes.py", line 455, in _update_class_log_prior
if len(class_prior) != n_classes:
TypeError: object of type 'numpy.float64' has no len()
也试图消除.rvs - >
TypeError: object of type 'rv_frozen' has no len()
是不可能RandomizeSearch,拥有3个部件的变量,即3个class_priors?
(1)http://scikit-learn.org/stable/modules/grid_search.html