python学习 文本特征提取(三) CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试

本文主要是介绍python学习 文本特征提取(三) CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • python学习 文本特征提取(一) DictVectorizer shuihupo
    博客地址,https://blog.csdn.net/shuihupo/article/details/80923414

  • python学习 文本特征提取(二) CountVectorizer TfidfVectorizer 中文处理
    https://blog.csdn.net/shuihupo/article/details/80930801

  • python学习文本特征提取(三) CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试
    https://blog.csdn.net/shuihupo/article/details/80931194

CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试

学习过了python学习 文本特征提取(二) CountVectorizer TfidfVectorizer 中文处理,如何实战呢。让我们奔腾学习:python学习 文本特征提取(三) CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试 。
暂时没有现成的数据,就直接把书上的例子作参考吧,只要大家明确数据的输入格式,其他都不是问题。
这个数据的格式是:
X_train, X_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25, random_state=33)
可认为是
X_train, X_test, y_train, y_test = train_test_split(x_文本, y_对应标签, test_size=0.25,)

只使用词频统计的方式将原始训练和测试文本转化为特征向量,朴素贝叶斯分类
# 从sklearn.datasets里导入20类新闻文本数据抓取器。
from sklearn.datasets import fetch_20newsgroups
# 从互联网上即时下载新闻样本,subset='all'参数代表下载全部近2万条文本存储在变量news中。
news = fetch_20newsgroups(subset='all')
print(type(news))
print(news)
# 从sklearn.cross_validation导入train_test_split模块用于分割数据集。
from sklearn.cross_validation import train_test_split
# 对news中的数据data进行分割,25%的文本用作测试集;75%作为训练集。
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里导入CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer
# 采用默认的配置对CountVectorizer进行初始化(默认配置不去除英文停用词),并且赋值给变量count_vec。
count_vec = CountVectorizer()# 只使用词频统计的方式将原始训练和测试文本转化为特征向量。
X_count_train = count_vec.fit_transform(X_train)
X_count_test = count_vec.transform(X_test)# 从sklearn.naive_bayes里导入朴素贝叶斯分类器。
from sklearn.naive_bayes import MultinomialNB
# 使用默认的配置对分类器进行初始化。
mnb_count = MultinomialNB()
# 使用朴素贝叶斯分类器,对CountVectorizer(不去除停用词)后的训练样本进行参数学习。
mnb_count.fit(X_count_train, y_train)# 输出模型准确性结果。
print 'The accuracy of classifying 20newsgroups using Naive Bayes (CountVectorizer without filtering stopwords):', mnb_count.score(X_count_test, y_test)
# 将分类预测的结果存储在变量y_count_predict中。
y_count_predict = mnb_count.predict(X_count_test)
# 从sklearn.metrics 导入 classification_report。
from sklearn.metrics import classification_report
# 输出更加详细的其他评价分类性能的指标。
print classification_report(y_test, y_count_predict, target_names = news.target_names)

CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试

# 继续沿用如上代码的工具包(在同一份源代码中,或者不关闭解释器环境),分别使用停用词过滤配置初始化CountVectorizer与TfidfVectorizer。
count_filter_vec, tfidf_filter_vec = CountVectorizer(analyzer='word', stop_words='english'), TfidfVectorizer(analyzer='word', stop_words='english')# 使用带有停用词过滤的CountVectorizer对训练和测试文本分别进行量化处理。
X_count_filter_train = count_filter_vec.fit_transform(X_train)
X_count_filter_test = count_filter_vec.transform(X_test)# 使用带有停用词过滤的TfidfVectorizer对训练和测试文本分别进行量化处理。
X_tfidf_filter_train = tfidf_filter_vec.fit_transform(X_train)
X_tfidf_filter_test = tfidf_filter_vec.transform(X_test)# 初始化默认配置的朴素贝叶斯分类器,并对CountVectorizer后的数据进行预测与准确性评估。
mnb_count_filter = MultinomialNB()
mnb_count_filter.fit(X_count_filter_train, y_train)
print 'The accuracy of classifying 20newsgroups using Naive Bayes (CountVectorizer by filtering stopwords):', mnb_count_filter.score(X_count_filter_test, y_test)
y_count_filter_predict = mnb_count_filter.predict(X_count_filter_test)# 初始化另一个默认配置的朴素贝叶斯分类器,并对TfidfVectorizer后的数据进行预测与准确性评估。
mnb_tfidf_filter = MultinomialNB()
mnb_tfidf_filter.fit(X_tfidf_filter_train, y_train)
print 'The accuracy of classifying 20newsgroups with Naive Bayes (TfidfVectorizer by filtering stopwords):', mnb_tfidf_filter.score(X_tfidf_filter_test, y_test)
y_tfidf_filter_predict = mnb_tfidf_filter.predict(X_tfidf_filter_test)# 对上述两个模型进行更加详细的性能评估。
from sklearn.metrics import classification_report
print classification_report(y_test, y_count_filter_predict, target_names = news.target_names)
print classification_report(y_test, y_tfidf_filter_predict, target_names = news.target_names)
The accuracy of classifying 20newsgroups using Naive Bayes (CountVectorizer by filtering stopwords): 0.863752122241
The accuracy of classifying 20newsgroups with Naive Bayes (TfidfVectorizer by filtering stopwords): 0.882640067912precision    recall  f1-score   supportalt.atheism       0.85      0.89      0.87       201comp.graphics       0.62      0.88      0.73       250comp.os.ms-windows.misc       0.93      0.22      0.36       248
comp.sys.ibm.pc.hardware       0.62      0.88      0.73       240comp.sys.mac.hardware       0.93      0.85      0.89       242comp.windows.x       0.82      0.85      0.84       263misc.forsale       0.90      0.79      0.84       257rec.autos       0.91      0.91      0.91       238rec.motorcycles       0.98      0.94      0.96       276rec.sport.baseball       0.98      0.92      0.95       251rec.sport.hockey       0.92      0.99      0.95       233sci.crypt       0.91      0.97      0.93       238sci.electronics       0.87      0.89      0.88       249sci.med       0.94      0.95      0.95       245sci.space       0.91      0.96      0.93       221soc.religion.christian       0.87      0.94      0.90       232talk.politics.guns       0.89      0.96      0.93       251talk.politics.mideast       0.95      0.98      0.97       231talk.politics.misc       0.84      0.90      0.87       188talk.religion.misc       0.91      0.53      0.67       158avg / total       0.88      0.86      0.85      4712precision    recall  f1-score   supportalt.atheism       0.86      0.81      0.83       201comp.graphics       0.85      0.81      0.83       250comp.os.ms-windows.misc       0.84      0.87      0.86       248
comp.sys.ibm.pc.hardware       0.78      0.88      0.83       240comp.sys.mac.hardware       0.92      0.90      0.91       242comp.windows.x       0.95      0.88      0.91       263misc.forsale       0.90      0.80      0.85       257rec.autos       0.89      0.92      0.90       238rec.motorcycles       0.98      0.94      0.96       276rec.sport.baseball       0.97      0.93      0.95       251rec.sport.hockey       0.88      0.99      0.93       233sci.crypt       0.85      0.98      0.91       238sci.electronics       0.93      0.86      0.89       249sci.med       0.96      0.93      0.95       245sci.space       0.90      0.97      0.93       221soc.religion.christian       0.70      0.96      0.81       232talk.politics.guns       0.84      0.98      0.90       251talk.politics.mideast       0.92      0.99      0.95       231talk.politics.misc       0.97      0.74      0.84       188talk.religion.misc       0.96      0.29      0.45       158avg / total       0.89      0.88      0.88      4712

参考
网络资源及书本《python 机器学习实战——从零开始通往Kaggle竞赛之路》第三章
代码名称:Chapter_3.1.1.1.ipynb
整书百度网盘地址:https://pan.baidu.com/s/1hpVqUTngF1r7qQlGUJ720g

这篇关于python学习 文本特征提取(三) CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478989

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很