zoukankan      html  css  js  c++  java
  • 机器学习之分类算法-朴素贝叶斯(2.2)

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

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

             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:
    ", y_predict)
        print("直接比对真实值和预测值:
    ", y_test == y_predict)
    
        # 方法2:计算准确率
        score = estimator.score(x_test, y_test)
        print("准确率为:
    ", score)
    
        return None


  • 相关阅读:
    常见试题
    Makefile学习笔记
    安装java
    IntelliJ IDEA for mac 快捷键
    JPA--Caused by: javax.persistence.PersistenceException: [PersistenceUnit: mysqlJPA] Unable to configure EntityManagerFactory
    log4j 配置
    Numbers
    mac 命令
    Intellij IDEA for mac 快捷键
    vim命令
  • 原文地址:https://www.cnblogs.com/sima-3/p/14812731.html
Copyright © 2011-2022 走看看