朴素贝叶斯算法实现

Posted 来来新视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了朴素贝叶斯算法实现相关的知识,希望对你有一定的参考价值。

20newsgroups数据集是用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。数据集收集了大约20,000左右的新闻组文档,均匀分为20个不同主题的新闻组集合。

对于数据集的使用,我们直接使用20newsgroups,在运行程序时,pycharm会提供一个下载数据的位置,点击下载即可。(下载的数据导入方法在下一个图文消息中)

from sklearn.naive_bayes import MultinomialNB
from sklearn.datasets import fetch_20newsgroups
#导入划分数据集方法
from sklearn.model_selection import train_test_split
#导入标准化方法
from sklearn.preprocessing import StandardScaler
#导入特征抽取方法
from sklearn.feature_extraction.text import TfidfVectorizer
#导入精确率和召回率
from sklearn.metrics import classification_report
import pandas as pd

def bayes():
"""
通过朴素贝叶斯进行文本分类
:return:None
"""
news = fetch_20newsgroups(subset='all')
#进行数据分割,划分数据集
x_train,x_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25)
#对数据集进行特征抽取
tf = TfidfVectorizer()
#以训练集中词的列表进行每篇文章的重要性统计
x_train = tf.fit_transform(x_train)
print(tf.get_feature_names())
x_test = tf.transform(x_test)
#朴素贝叶斯算法的实现
mn = MultinomialNB(alpha=1.0)
print(x_train.toarray())
mn.fit(x_train,y_train)
y_predict = mn.predict(x_test)
print("预测文章类别:",y_predict)
#得出准确率
print("准确率为:",mn.score(x_test,y_test))

print("每一个类别的精确率和召回率:" , classification_report(y_test,y_predict,target_names=news.target_names))

return None
if __name__ == "__main__":
bayes()

代码流程:

1,划分数据集(将数据划分为训练集和测试集)

2,对数据进行特征抽取(方便后期算法的分类)

3,朴素贝叶斯算法的实现


以上是关于朴素贝叶斯算法实现的主要内容,如果未能解决你的问题,请参考以下文章

利用朴素贝叶斯算法进行分类-Java代码实现

机器学习--朴素贝叶斯算法原理方法及代码实现

Python机器学习(十五)朴素贝叶斯算法原理与代码实现

第五篇:朴素贝叶斯分类算法原理分析与代码实现

朴素贝叶斯算法——实现自动分类

朴素贝叶斯并不朴素