美文网首页
朴素贝叶斯,中文文档分类

朴素贝叶斯,中文文档分类

作者: 疯狂的小强_94ee | 来源:发表于2019-04-14 22:55 被阅读0次

1 朴素贝叶斯实现步骤参考

 地址: https://github.com/gzhold/DataAnalysis/tree/master/sklearn/data/nativeBayes/

文件:朴素贝叶斯分类.pdf

2 分档分类实现demo

数据 : https://github.com/gzhold/DataAnalysis/tree/master/sklearn/data/textClassification

数据说明: 文档共有 4 种类型:女性、体育、文学、校园

使用朴素贝叶斯分类对训练集进行训练,并对测试集进行验证,并给出测试集的准确率。

#!/usr/bin/env python

# -*- coding:utf8 -*-

import os

from sklearn.feature_extraction.textimport TfidfVectorizer

from sklearnimport metrics

import jieba

# 加载数据

def load_data(base_path):

"""

    :parambase_path: 基础路径

    :return: 分词列表,标签列表

"""

    documents = []

labels = []

# 循环所有文件并进行分词打标

    for root, dirs, filesin os.walk(base_path):

for filein files:

label = root.split('/')[-1]

filename = os.path.join(root, file)

# 因为字符集问题因此直接用二进制方式读取

            with open(filename, 'rb')as f:

content = f.read()

word_list =list(jieba.cut(content))

words = [wlfor wlin word_listif wlnot in stop_words]

documents.append(' '.join(words))

labels.append(labelMap[label]);

return documents, labels

labelMap = {'体育':0, '女性':1, '文学':2, '校园':3}

#加载停用词

stop_words = [line.strip()for linein open('./../data/nativeBayes/stopword.txt').readlines()]

# 训练集

train_contents, train_labels = load_data('./../data/textClassification/train')

#计算单词的权重

tfidf_vec = TfidfVectorizer(stop_words=stop_words, max_df=0.5)

train_features = tfidf_vec.fit_transform(train_contents)

#print('每个单词的 ID:', tfidf_vec.vocabulary_)

#print('每个单词的 tfidf 值:', train_features.toarray())

# 多项式贝叶斯分类器

from sklearn.naive_bayesimport MultinomialNB

clf = MultinomialNB(alpha=0.001).fit(train_features, train_labels)

#测试集

test_contents, test_labels = load_data('./../data/textClassification/test');

# vocabulary 词汇表:字典型

# max_df 参数用来描述单词在文档中的最高出现率。

# 假设 max_df=0.5,代表一个单词在 50% 的文档中都出现过了,那么它只携带了非常少的信息,因此就不作为分词统计(一般很少设置 min_df,因为 min_df 通常都会很小)。

test_tf = TfidfVectorizer(stop_words=stop_words, max_df=0.5, vocabulary=tfidf_vec.vocabulary_)

# 用 fit_transform 方法进行拟合,得到 TF--IDF 特征空间 features,你可以理解为选出来的分词就是特征

test_features = test_tf.fit_transform(test_contents)

# 预测得到分类结果(predict 函数做的工作就是求解所有后验概率并找出最大的那个)

predicted_labels = clf.predict(test_features)

#计算准确率实际上是对分类模型的评估。accuracy_score 函数方便我们对实际结果和预测的结果做对比,给出模型的准确率。

print(metrics.accuracy_score(test_labels, predicted_labels))

相关文章

  • 朴素贝叶斯法

    朴素贝叶斯法 朴素贝叶斯法的学习与分类 朴素贝叶斯法的参数估计 朴素贝叶斯实现 高斯朴素贝叶斯实现 使用 skle...

  • 轻松带你搞懂朴素贝叶斯分类算法

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 机器学习算法朴素贝叶斯分类

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 监督学习之概率模型

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 朴素贝叶斯

    朴素贝叶斯 用处:朴素贝叶斯主要解决的是而分类的问题。 为什么叫朴素贝叶斯: 因为贝叶斯分类只做最原始,最简单的假...

  • 朴素贝叶斯,中文文档分类

    1 朴素贝叶斯实现步骤参考 地址:https://github.com/gzhold/DataAnalysis/t...

  • 朴素贝叶斯法(NaiveBayes)

    朴素贝叶斯法(Naive Bayes) 朴素贝叶斯法是基于贝叶斯定力和特征条件独立假设的分类方法。 朴素贝叶斯法实...

  • 朴素贝叶斯(Naive Bayes)

    朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这...

  • 机器学习(九)——概率图模型之朴素贝叶斯

    朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这...

  • 朴素贝叶斯分类

    朴素贝叶斯分类的原理与流程 朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴...

网友评论

      本文标题:朴素贝叶斯,中文文档分类

      本文链接:https://www.haomeiwen.com/subject/ezuewqtx.html