python学智能算法(十四)|机器学习朴素贝叶斯方法进阶-CountVectorizer文本处理简单测试

【1】引用

前序学习文章中,已经对拉普拉斯平滑和简单二元分类进行了初步探索,相关文章链接为:

python学智能算法(十二)|机器学习朴素贝叶斯方法初步-拉普拉斯平滑计算条件概率-CSDN博客

python学智能算法(十三)|机器学习朴素贝叶斯方法进阶-简单二元分类-CSDN博客

在实践应用中也会发现,朴素贝叶斯方法还能对文本进行分类,今天的学习目标就是学习简单的文本操作技巧,需要使用sklearn里面的CountVectorizer包。

【2】代码学习

首先是引入必要的模块或者说库:

# 引入必要的模块
from sklearn.feature_extraction.text import CountVectorizer

输入待处理的文本:

# 单个文档
document = ["Python programming is fun and useful for data science."]

这里只有一个句子:Python programming is fun and useful for data science.

直接创建一个文本处理器:

# 创建向量化器
vectorizer = CountVectorizer()

CountVectorizer是 scikit-learn 库中用于文本向量化的工具,将文本转换为词频矩阵。CountVectorizer()满足默认配置:

  • 自动将文本转为小写。
  • 按空格分词。
  • 不处理停用词。
  • 只考虑单个词。
  •  

实际上,vectorizer在这里被定义为一个工具,通过这个工具才可以调用具体的文本处理命令。

然后就是:

X = vectorizer.fit_transform(document)

这里的fit_transform是由fit和transform两个命令合并在一起的快捷操作:

fit命令的作用是分析文本中有哪些词;

transform命令的作用是将文本转化为词频矩阵,有合并同类项的功能。

CountVectorizer()是类的构造函数,vectorizer是实例,fit和transform是实例方法。

然后是查看词汇表操作:

# 查看词汇表
print("词汇表:", vectorizer.get_feature_names_out())

这里的vectorizer.get_feature_names_out()执行后,会按照各个词汇首字母的顺序将组成句子的词依次输出,比如上方的句子Python programming is fun and useful for data science会输出为:['and' 'data' 'for' 'fun' 'is' 'programming' 'python' 'science' 'useful']。

最后的向量输出为:

# 查看向量表示
print("向量表示:", X.toarray())

X.toarray()本质上是输出各个词在句子中出现的次数。

比如上方的句子Python programming is fun and useful for data science,X.toarray()会输出一系列1,因为每个单词出现的频次都是1。

完整代码为:

# 引入必要的模块
from sklearn.feature_extraction.text import CountVectorizer# 单个文档
document = ["Python programming is fun and useful for data science."]# 创建向量化器
vectorizer = CountVectorizer()
print('vetorizer=',vectorizer)
# 拟合并转换文档
X = vectorizer.fit_transform(document)
print('X=',X)
# 查看词汇表
print("词汇表:", vectorizer.get_feature_names_out())# 查看向量表示
print("向量表示:", X.toarray())

代码运行后的输出为:

vetorizer= CountVectorizer()
X=   (0, 6)    1
  (0, 5)    1
  (0, 4)    1
  (0, 3)    1
  (0, 0)    1
  (0, 8)    1
  (0, 2)    1
  (0, 1)    1
  (0, 7)    1
词汇表: ['and' 'data' 'for' 'fun' 'is' 'programming' 'python' 'science' 'useful']
向量表示: [[1 1 1 1 1 1 1 1 1]]

【3】代码测试

实际上要想测试代码非常简单,只需要改变初始句子即可,比如把句子改成:

# 单个文档
document = ["Python programming is fun and useful for data science and math."]

此时的输出就会变成:

词汇表: ['and' 'data' 'for' 'fun' 'is' 'math' 'programming' 'python' 'science'
 'useful']
向量表示: [[2 1 1 1 1 1 1 1 1 1]]

显然,出现了两个and后,向量表示的频次会自动增加。

 【4】细节说明

代码中文本后面的点号不是必须的。

【5】总结

学习了CountVectorizer文本处理的简单应用。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/910457.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java枚举类的规范设计与常见错误规避

前言 在Java开发中,枚举(enum)是一种强大的工具,用于定义一组固定常量集合。然而,许多开发者在使用枚举时容易陷入设计误区,导致代码可维护性差、运行时错误频发,甚至引发生产事故。 一、枚举…

Vue指令v-if

目录 一、Vue中的v-if指令是什么?二、v-if指令的使用 一、Vue中的v-if指令是什么? v-if指令是根据表达值的真假,切换元素的显示和隐藏, 本质是通过操纵dom元素来切换显示状态。 注意: 表达式的值为true,元…

探秘阿里云云数据库Tair:性能、特性与应用全景解析

引言 在数字化浪潮席卷全球的当下,数据已然成为企业最为关键的资产之一,如何高效管理和运用这些数据,成为了企业在激烈竞争中脱颖而出的关键。云数据库作为现代数据管理的核心工具,凭借其卓越的可扩展性、灵活性以及高效的数据处…

百度大模型免费上线,学AI大模型就选近屿智能

3月16日,文心大模型4.5和文心大模型X1正式发布!目前两款模型已免费对用户开放。 文心大模型4.5是百度自主研发的新一代原生多模态基础大模型,通过多个模态联合建模实现协同优化,提高多模态理解能力,精进语言能力&#…

PostgreSQL 中实现跨库连接主要有两种解决方案

方法一:使用 dblink 扩展 dblink 是 PostgreSQL 的内置扩展,允许在一个数据库会话中执行远程 SQL 查询。 步骤 1:在源数据库中启用 dblink 扩展 CREATE EXTENSION IF NOT EXISTS dblink;步骤 2:执行跨库查询 -- 简单查询示例&…

Qt中的布局

Qt6.8的布局管理系统,用于自动排列部件:水平布局QHBoxLayout、垂直布局QVBoxLayout、网格布局QGridLayout、表单布局QFormLayout 布局(layout)是一种优雅而灵活的方式,可以在其容器内自动排列子部件(child widgets)。每个部件通过sizeHint和s…

Agent成本降低46%:缓存规划器的思路模板

论文标题 Cost-Efficient Serving of LLM Agents via Test-Time Plan Caching 论文地址 https://arxiv.org/pdf/2506.14852 作者背景 斯坦福大学 动机 大模型能力的飞速进步催收了大量 AI 智能体应用,它们协调多种模型、工具、工作流来解决实际复杂任务。然而…

Vue 3 + Axios 完整入门实战指南

从入门到深入,手把手教你在 Vue 3 中正确使用 Axios,支持全局挂载、局部分离、使用 proxy 连接场景,适合所有前端小白和实战设计。 大家好,我是石小石!一个热爱技术分享的开源社区贡献者,小册《油猴脚本实战…

CppCon 2017 学习:Effective Qt: 2017 Edition

这段内容讲的是 Qt 容器(Qt Containers)和标准库容器(STL Containers)之间的选择和背景: 主要观点: Qt 容器的历史背景 Qt 自身带有一套容器类(如 QList, QVector, QMap 等)&#…

Pandas 核心数据结构详解:Series 和 DataFrame 完全指南

1. 前言:为什么需要 Pandas 数据结构? 在数据处理和分析中,我们需要高效的方式来存储和操作结构化数据。Python 原生的列表(List)和字典(Dict)虽然灵活,但缺乏针对数据分析的优化。…

使用 Solscan API 的开发指南:快速获取 Solana 链上数据

Solana 生态中有多个区块浏览器,其中 Solscan 提供了功能全面的 API,适用于查询地址资产、Solana 生态中有多个区块浏览器,其中 Solscan 提供了功能全面的 API,适用于查询地址资产、交易详情、合约交互等多种开发场景。相比直接使…

高效工具-libretv

什么是libretv? LibreTV 是一个轻量级、免费的在线视频搜索与观看平台,提供来自多个视频源的内容搜索与播放服务。无需注册,即开即用,支持多种设备访问。项目结合了前端技术和后端代理功能,可部署在支持服务端功能的各类网站托管…

回溯----5.括号生成

题目链接 /** 合法括号生成规则: 第一个括号必须是左括号(第一个为右必定无法闭合) 选择过程中左括号数量必须小于n才可选择左括号(大于n则一定有括号无法闭合) 左括号数量必须大于右括号数量才可选择右括号(相等代表所有前驱括号都已闭合) 所需参数: left 记录已选择左括号数…

【weaviate】分布式数据写入之LSM树深度解析:读写放大的权衡

文章目录 一、LSM树的设计哲学:写优化的根本动机1、 传统B树存储的性能瓶颈2、 LSM树的根本性创新 二、写入路径的深度技术分析1、 WAL机制的精密设计2、 MemTable的数据结构3、 刷盘(Flush)过程的技术细节 三、Compaction策略:LS…

Pygame 大鱼吃小鱼

【Pygame 大鱼吃小鱼】是一款基于Python编程语言和Pygame库开发的趣味游戏。Pygame是Python中一个广泛用于开发2D游戏的开源模块集合,它提供了丰富的功能,如窗口管理器、事件处理、图形绘制等,使得初学者也能快速上手创建游戏。 这段 Python …

【为什么在触发的事件中修改控件属性需要使用`Invoke`】

在C#中,特别是在使用Windows Forms或WPF等GUI框架时,控件的属性和状态通常只能在创建它们的线程(即UI线程,即主线程或用户界面线程)中直接修改。这是由于这些框架的设计基于单线程模型,其中所有与用户界面&…

Android 当apk是系统应用时,无法使用webView的解决方案

最近在做项目时,遇到了一个无法使用webView的问题,apk是系统应用,点击加载webView时应用就是崩溃,原因是系统应用时,Android会觉得webView不安全,不避让加载。 解决的思路就是使用映射,把原生的…

ArcGIS Pro无插件加载(无偏移)天地图!一次添加长久使用

以前我们介绍过:ArcGIS无插件加载(无偏移)天地图。这次我们来介绍ArcGIS Pro中如何添加天地图。 我们将通过从天地图官网自己添加服务链接并添加至收藏的方式以及应急的方法来做本次的介绍。天地图的数据主要包括影像、电子地图、地形图等。我…

Go堆内存管理

# Go堆内存管理 1. Go内存模型层级结构 Golang内存管理模型与TCMalloc的设计极其相似。基本轮廓和概念也几乎相同,只是一些规则和流程存在差异。 2. Go内存管理的基本概念 Go内存管理的许多概念在TCMalloc中已经有了,含义是相同的,只是名字…

零售 EDI:Chewy EDI 项目注意事项

在此前的文章《供应商对接Chewy的EDI需求》中,介绍了Chewy的EDI需求,本文主要为大家分享Chewy对于各个业务单据的细节性需求,了解这些细节性注意事项将帮助企业快速基于知行软件提供的EDI服务与Chewy建立EDI对接。 基于知行之桥EDI系统能够通…