朴素贝叶斯

558 阅读2分钟

这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战

朴素贝叶斯

统计属性的条件概率
假设属性相互独立
文本分类 - 垃圾文本过滤、情感预测、推荐系统

具体流程

  1. 给出训练数据
  2. 数据对应的分类
  • 类别概率和条件概率

贝叶斯原理、贝叶斯分类和朴素贝叶斯

贝叶斯原理 - 最大的概念 - 解决了概率论中“逆向概率”的问题
贝叶斯分类器 - 在贝叶斯原理的基础上设计的
朴素贝叶斯 - 最简单的贝叶斯分类器

朴素贝叶斯分类工作原理

离散数据案例

image.png

连续数据案例

  1. 假设都是正态分布
  2. 求出均值和方差 - 得到概率密度函数 - 值代入,算出某点的密度函数值
    • 转成了离散数据分布,直接也用公式

朴素贝叶斯工作流程

  1. 准备阶段
    确定特征属性 - 每个特征属性进行适当划分 - 人工对一部分数据进行分类 - 形成训练样本
  2. 训练阶段
    生成分类器 - 计算每个类别在训练样本中出现的频率及每个特征属性划分对每个类别的条件概率
    输入:特征属性、训练样本
    输出:分类器
  3. 应用阶段
    输入:分类器、新数据 输出:新数据的分类结果

求IF-IDF

TfidfVectorizer 类的创建

  1. 创建TfidfVectorizer类
  2. 对列表进行拟合 - fit_transform - 文本矩阵
  3. 输出
    1. 所有不重复的词 - get_feature_names()
    2. 对应的id值 - vocabulary_
    3. 每个单词的tfdf值 - toarray()

对文档进行分类

  1. 准备阶段
    1. 文档分词
      1. 英文 - nltk
        1. word_tokenize(text) - 分词
        2. pos_tag() - 标注单词词性
      2. 中文 - jieba
    2. 加载停用词
    3. 计算单词权重
      tfidfVectorizer类 - fit_transform拟合 - 得到TF-IDF特征空间features
      tf = TfidVectorizer(stop_words, max_df) features = tf.fit_transform(train_contents)
  2. 分类阶段
    1. 朴素贝叶斯生成分类器
      train_features、train_labels - clf - 自动生v符号特征空间和对应分类的分类器
      from sklearn.naive_bayes import MultinomialNB
      clf = MultionmialNB(alpha=0.001).fit(train_features, train_labels)

    2. 分类器应用于测试集

    3. 计算分类准确率 metrics中的accuarcy_score
      from sklearn import metrics
      print metrics.accuracy_score(test_labels, predicted_labels)