【Kaggle笔记】新闻文本分类(朴素贝叶斯)

来源:互联网 发布:radio单选按钮js实现 编辑:程序博客网 时间:2024/06/05 03:41

朴素贝叶斯模型适用场景

  • 海量文本分类任务
  • 假设数据特征与目标之间存在线性关系

数据集

  • sklearn 中的 fetch_20newsgroups

代码

# -*- coding: utf-8 -*-"""20 news groups classify模型朴数贝叶斯"""# 从sklearn.datasets里导入新闻数据抓取器fetch_20newsgroups。from sklearn.datasets import fetch_20newsgroups# 与之前预存的数据不同,fetch_20newsgroups需要即时从互联网下载数据。news = fetch_20newsgroups(subset='all')# 查验数据规模和细节。print(len(news.data))print(news.data[0])# 从sklearn.cross_validation 导入 train_test_split。from sklearn.cross_validation import train_test_split# 随机采样25%的数据样本作为测试集。X_train, X_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25, random_state=33)# 从sklearn.feature_extraction.text里导入用于文本特征向量转化模块。详细介绍请读者参考3.1.1.1 特征抽取一节。from sklearn.feature_extraction.text import CountVectorizervec = CountVectorizer()X_train = vec.fit_transform(X_train)X_test = vec.transform(X_test)# 从sklearn.naive_bayes里导入朴素贝叶斯模型。from sklearn.naive_bayes import MultinomialNB# 从使用默认配置初始化朴素贝叶斯模型。mnb = MultinomialNB()# 利用训练数据对模型参数进行估计。mnb.fit(X_train, y_train)# 对测试样本进行类别预测,结果存储在变量y_predict中。y_predict = mnb.predict(X_test)# 从sklearn.metrics里导入classification_report用于详细的分类性能报告。from sklearn.metrics import classification_reportprint('The accuracy of Naive Bayes Classifier is', mnb.score(X_test, y_test))print(classification_report(y_test, y_predict, target_names = news.target_names))

效果

0 0