十、naive bayes朴素贝叶斯

1 简介

假定:样本属性独立性假定
比如一篇文章w=(词1,词2,词3,...)
我们要看这篇文章属于科技还是娱乐
需要计算p(科技|w)和p(娱乐|w),哪个概率大,我们就把这篇文章分到哪一类
p(科技|w)=p(科技|词1,词2,词3,...)=p(词1,词2,词3,...|科技)p(科技)/p(词1,词2,词3,...)
p(娱乐|w)=p(娱乐|词1,词2,词3,...)=p(词1,词2,词3,...|娱乐)p(娱乐)/p(词1,词2,词3,...)
可以看到分母都是一样的,所以考虑分子大小即可。

2 优缺点

(一)优点
1、不需要调参
2、有稳定的分类效率
3、对缺失数据不太敏感,算法比较简单,常用于文本分类,分类准确性高,速度快
(二)缺点
1、假设条件:样本属性独立性的假定,所以样本属性有关联时效果不好
2、在训练集中进行统计词工作,会对结果造成干扰

3 实例-对新闻进行分类

首先导入模块

from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

朴素贝叶斯算法:

def NB():
    news=fetch_20newsgroups()
    x=news.data
    y=news.target
    x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.25)
    tfidf = TfidfVectorizer()
    x_train = tfidf.fit_transform(x_train)
    x_test = tfidf.transform(x_train)
    nb=MultinomialNB(alph=1.0)
    nb.fit(x_train,y_train)
    y_predict=nb.predict(x_test)
    print('预测文章类别为:', y_predict)
    score=nb.score(x_test,y_test)
    print('准确率为:',score)
    #混合矩阵
    print('每个类别的精准性和召回率',classification_report(y_test,y_predict,target_names=news.target_names))
if __name__='__main__':
    NB()

输出:

预测文章类别为: [ 7 14 17 ... 10 14  5]
准确率为: 0.8404074702886248
每个类别的精确率和召回率:     precision    recall  f1-score   support
             alt.atheism       0.85      0.73      0.79       214
           comp.graphics       0.86      0.73      0.79       252
 comp.os.ms-windows.misc       0.87      0.81      0.84       266
comp.sys.ibm.pc.hardware       0.81      0.81      0.81       267
   comp.sys.mac.hardware       0.83      0.87      0.85       223
          comp.windows.x       0.91      0.86      0.88       260
            misc.forsale       0.94      0.68      0.79       251
               rec.autos       0.85      0.95      0.90       226
         rec.motorcycles       0.95      0.96      0.95       256
      rec.sport.baseball       0.98      0.92      0.95       281
        rec.sport.hockey       0.89      0.96      0.93       226
               sci.crypt       0.78      0.99      0.87       256
         sci.electronics       0.89      0.78      0.83       251
                 sci.med       0.94      0.90      0.92       227
               sci.space       0.81      0.93      0.87       220
  soc.religion.christian       0.56      0.98      0.71       248
      talk.politics.guns       0.75      0.98      0.85       223
   talk.politics.mideast       0.88      0.99      0.93       209
      talk.politics.misc       0.99      0.56      0.72       194
      talk.religion.misc       0.97      0.19      0.31       162
             avg / total       0.86      0.84      0.83      4712

你可能感兴趣的:(十、naive bayes朴素贝叶斯)