在Naive Bayes MultinomialNB中设置先验概率

时间:2017-02-28 00:22:24

标签: python-2.7 scikit-learn naivebayes grid-search

我不相信这是重复的,因为thisthis都没有回答我要问的问题。

首先,MultinomialNB确实有class_prior参数(不是属性),如documentation的此片段中所示:

  

参数:

     

alpha:float,optional(默认值= 1.0)

Additive (Laplace/Lidstone) smoothing parameter (0 for no smoothing).
     

fit_prior:boolean,optional(default = True)

Whether to learn class prior probabilities or not. If false, a uniform prior will be used.
     

class_prior:类似数组,大小(n_classes,),可选(默认=无)

Prior probabilities of the classes. If specified the priors are not adjusted according to the data.

其次,以下代码及其输出证实了这一点:

NB_cls= MultinomialNB(alpha= 0.1, fit_prior = True, class_prior = [.2, .8])

NB_cls.get_params()
  
    

{' alpha':0.1,' class_prior':[0.2,0.8],' fit_prior':True}

  

但是,以下代码(旨在设置gridsearch以调整MultinomialNB分类器的超参数)会显示一条错误消息,指出class_prior不是参数:

alphas = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
p_grid_NB = {'alpha': alphas, 'fit_prior' : [True, False], 'class_prior ' : [None, [.1,.9],[.2, .8]]}

NB_cls= MultinomialNB()

grid = GridSearchCV(estimator = NB_cls, param_grid = p_grid_NB, scoring = 'roc_auc', cv = 5)
grid.fit(Train_X, Train_y)
  

ValueError:估算器的参数class_prior无效   MultinomialNB。检查可用参数列表   estimator.get_params().keys()

分类器的数据输入没有任何问题。以下是具有相同数据的工作代码(使用MLPClassifierSGDClassifier进行网格搜索时也没有遇到任何问题):

nb_cls = MultinomialNB()
nb_cls.fit(Train_X, Train_y)

y_hat = nb_cls.predict(Test_X)
print accuracy_score(Test_y, y_hat)
  
    

0.73125

  

问题:关于设置此参数我缺少什么?

感谢您的见解。

0 个答案:

没有答案