首页 > 编程语言 > 详细

机器学习之分类算法-朴素贝叶斯(2.2)

时间:2021-05-26 14:50:30      阅读:16      评论:0      收藏:0      [点我收藏+]

   朴素?
          假设:特征与特征之间是相互独立

   贝叶斯公式(变式如下):

         P(B|A)=P(A|B)*P(B)/P(A)

   应用场景
           文本分类
            单词作为特征

   拉普拉斯平滑系数:

        目的:防止计算出的分类概率为0  

       计算出现  影院,支付宝,云计算 属于娱乐的概率?(未算分母P(A))

        技术分享图片

   P(娱乐|影院,支付宝,云计算) =P(影院,支付宝,云计算|娱乐)P(娱乐) =P(影院|娱乐)*P(支付宝|娱乐)*P(云计算|娱乐)P(娱乐)=(56+1/121+4)(15+1/121+4)(0+1/121+1*4)(60/90) = 0.00002

技术分享图片

流程:

             1)获取数据
             2)划分数据集
             3)特征工程
                    文本特征抽取
             4)朴素贝叶斯预估器流程
             5)模型评估

   

    优点:
              对缺失数据不太敏感,算法也比较简单,常用于文本分类。
             分类准确度高,速度快
    缺点:
              由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好

 案例:
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


def nb_news():
    """
    用朴素贝叶斯算法对新闻进行分类
    :return:
    """
    # 1)获取数据
    news = fetch_20newsgroups(subset="all")

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(news.data, news.target)

    # 3)特征工程:文本特征抽取-tfidf
    transfer = TfidfVectorizer()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)朴素贝叶斯算法预估器流程
    estimator = MultinomialNB()
    estimator.fit(x_train, y_train)

    # 5)模型评估
    # 方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)

    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)

    return None

 



机器学习之分类算法-朴素贝叶斯(2.2)

原文:https://www.cnblogs.com/sima-3/p/14812731.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!