机器学习:词向量转换及代码实现

news2024/9/27 15:19:58

CountVectorizerscikit-learn 库中的一个文本向量化工具,它将文本数据转换为词频特征矩阵。以下是 CountVectorizer 的算法原理和步骤:

原理

  1. 文本预处理

    • 分词:将文本分割成单词或短语(tokens)。
    • 小写化:将所有单词转换为小写,以确保大小写不敏感。
    • 去除停用词:可选步骤,移除常见的、意义不大的单词,如“the”、“is”等。
    • 去除标点和特殊字符:可选步骤,清理文本中的非字母数字字符。
  2. 构建词汇表

    • 从所有文本中提取唯一的单词或短语,构建一个词汇表。
    • 每个单词或短语被分配一个唯一的整数索引。
  3. 向量化

    • 根据词汇表,计算每个单词或短语在每个文本中的出现次数。
    • 生成一个词频矩阵,其中行对应于文本,列对应于词汇表中的单词或短语。
  4. n-gram 范围

    • ngram_range=(1, 3) 表示考虑从单个单词(1-gram)到三词短语(3-gram)的所有组合。
    • 这增加了模型能够捕捉的上下文信息的复杂性。
  5. 特征选择

    • max_features=6 限制了词汇表中单词或短语的最大数量,选择最常见的6个特征。
    • 这有助于减少特征空间的维度,提高计算效率。

算法步骤

  1. 初始化

    • 创建 CountVectorizer 实例,设置参数如 max_features 和 ngram_range。                     
      from sklearn.feature_extraction.text import CountVectorizer
      texts=['dog cat fish','dog cat cat','fisg bird','bird']
      conts=[]
      cv=CountVectorizer(max_features=6,ngram_range=(1,3))
  2. 拟合(Fit)

    • 调用 fit 方法,算法分析文本数据,构建词汇表。                                                          
      cv_fit = cv.fit(texts)
  3. 转换(Transform)

    • 调用 transform 方法,将文本数据转换为词频矩阵。                                                       
      cv_fit = cv.transform(texts)
  4. 输出

    • get_feature_names_out() 方法返回词汇表中的单词或短语。
    • toarray() 方法将稀疏矩阵转换为常规数组,便于查看和分析。                                      
      print(cv.get_feature_names_out())
      print(cv_fit.toarray())
  5. 输出结果                                                                                                                                           

  6.  完整代码

# 导入 sklearn 库中的 CountVectorizer 类
from sklearn.feature_extraction.text import CountVectorizer

# 定义一组文本数据,每个文本是一个字符串
texts = ['dog cat fish', 'dog cat cat', 'fisg bird', 'bird']

# 初始化 CountVectorizer 对象
# max_features=6 表示最多选择6个最重要的特征(最常见的单词或短语)
# ngram_range=(1, 3) 表示考虑单词的单字(1-gram)、双字(2-gram)和三字(3-gram)组合
cv = CountVectorizer(max_features=6, ngram_range=(1, 3))

# 使用 fit 方法来学习文本数据中的词汇表
cv_fit = cv.fit(texts)  # 学习词汇表

# 使用 transform 方法来转换文本数据为特征矩阵
# 这一步使用上一步中学习的词汇表来计算每个文本中单词的出现次数
cv_fit = cv.transform(texts)  # 转换文本数据

# 打印转换后的稀疏矩阵
print(cv_fit)

# 打印词汇表中的单词或短语
print(cv.get_feature_names_out())

# 将稀疏矩阵转换为常规的 numpy 数组格式
print(cv_fit.toarray())

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

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

相关文章

mysql配置与日常使用

mysql配置 1.从官网下载zip文件并解压,解压的路径中最好不要有中文 2.添加环境变量 这一步的作用是可以在任意文件夹下操作mysql指令 操作步骤:环境变量 ->用户变量Path -> 添加mysql的bin目录 V 3. 在mysql解压路径下添加配置文件my.ini …

力扣刷题第二阶段Days35(javascript)

1,题目描述 -- 和为K的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 2,代码详解 哈希+前缀和 /*** param {number[]} nums* param {number} k* ret…

【openwrt-21.02】T750 openwrt-21.02 Linux-5.4.238 input子系统----gpio-keys实现分析

input子系统 输入子系统是由设备驱动层(input driver)、输入核心层(input core)、输入事件处理层(input event handle)组成 input子系统架构图 gpio-keys gpio-keys是基于input子系统实现的一个通用按键驱动,该驱动也符合linux驱动实现模型,即driver和device分离模型.一…

MIT 6.5840(6.824) Lab 4:Fault-tolerant Key/Value Service 设计实现

1 实验要求 本实验旨在利用lab 3中的Raft库,构建一个具备容错能力的键值存储服务。服务将作为一个复制状态机,由多个服务器组成,各服务器通过Raft协议同步数据库状态。即使在部分故障或网络隔离的情况下,只要大多数服务器正常&am…

通过MindOpt APL建模求解组合优化问题中的常见问题:图着色问题

组合优化问题:图着色问题 通过MindOpt APL建模求解组合优化问题中的常见问题:图着色问题 1. 背景知识 1.1. 组合优化问题 在之前发布的《组合优化问题:装箱问题》中,我们讲解了什么是组合优化(Combinatorial Optimi…

【练习1】数字统计

题目: 分析: 枚举法数字拆分(tmp % 10,tmp / 10) 代码实现: public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int l in.nextInt(), r in.nextInt();…

【2024 CCF编程能力等级认证(GESP)Python 】一级大纲

目录 1. 背景2. 考核知识块3. 考核内容3.1 计算机基础知识3.2 编程规范3.3 基础语法3.4 数据类型3.5 三大基本结构3.6 运算符3.7 模块导入与输入输出3.8 Turtle绘图4. 考核目标5. 题型分布6. 考试时长7. 认证时间与报名8. 政策与福利9. GESP一级认证形式 1. 背景 官网&#xff…

11 对话模型微调

提问:其实我一直觉的数据是最费事的一个,现在都是使用别人的数据,如果对于实际场景中那么我们该如何获取处理数据呢! 1 数据处理; 2 模型选择,调参数; 数据 llm-wizard/alpaca-gpt4-data-zh …

简单的二叉树问题——二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2] 输出…

【二叉树进阶】--- 前中后序遍历非递归

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 本篇博客我们将来了解有关二叉树前中后序遍历的非递归版本。 🏠 前序遍历 要迭代非递归实现二叉树的前序遍历,首先还…

【pgAdmin4】创建/删除:数据库Database和数据库表Table

目录 0.环境 1.简介 2.详细步骤 1)创建数据库 法一:UI界面创建 法二:sql语句创建数据库 2)创建数据库表 查看数据库表 查看数据库表内容 法一:UI界面创建数据库表 法二:sql语句创建数据库表 3&…

C_09_字符操作

字符串相关函数 头文件都是 string.h 概述: 由系统提供的由字符串处理的函数 属于库函数 所属头文件 string.h 1 strlen 测量字符串长度 语法: size_t strlen(const char *s);参数:要测量的字符串返回值:长度注意:测量的长度…

Screenshot Software,截屏软件

一.截屏软件 1.1 自带的一些截屏软件 (1)微信 (2)QQ 有一次无意中测试了下,截屏软件的截屏质量,发现对于同一个页面截全屏,微信截的屏质量相对于 win 自带的截图软件还要好的,所以…

Elasticsearch 开放推理 API 增加了对 Anthropic 的 Claude 的支持

作者:来自 Elastic Jonathan Buttner 我们很高兴地宣布 Elasticsearch Open Inference API 的最新功能:集成 Anthropic 的 Claude。这项功能使 Elastic 用户能够直接连接到 Anthropic 平台,并使用 Claude 3.5 Sonnet 等大型语言模型来构建 Ge…

Java 应用服务器有哪些?

应用服务器 Java 应用服务器是专门用来运行基于Java技术的Web应用程序的服务器。 这些服务器支持Java EE(Java Platform, Enterprise Edition)规范,提供了多种服务,如事务管理、Java Naming and Directory Interface (JNDI)、数…

机器之心 | 五倍吞吐量,性能全面包围Transformer:新架构Mamba引爆AI圈

本文来源公众号“机器之心”,仅用于学术分享,侵权删,干货满满。 原文链接:五倍吞吐量,性能全面包围Transformer:新架构Mamba引爆AI圈 屹立不倒的 Transformer 迎来了一个强劲竞争者。 在别的领域&#xff…

探索 HarmonyOS NEXT Developer Beta6,开启创新应用

华为的鸿蒙 NEXT 的发展越来越快 HarmonyOS NEXT Developer Beta6 版本的推出,为开发者们带来了全新的机遇和挑战。这个版本不仅拥有诸多令人振奋的新特性,还提供了丰富的新增资源和精彩的开发者活动。 新特性方面,DevEco Studio NEXT Dev…

算法练习题06:leetcode793每日温度

单调栈解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int length temperatures.length;int[] ans new int[length];Stack<Integer> stack new Stack<>();for(int i 0;i<length;i){int temperature temperatures[i];while(!…

系统功能性能优化:从问题定位到解决方案的系统性分析

引言 在现代软件系统中&#xff0c;性能优化是确保系统稳定、响应迅速和资源高效利用的关键。面对复杂的系统架构和业务逻辑&#xff0c;进行性能优化往往需要遵循一系列系统性的步骤&#xff0c;以确保问题被准确识别&#xff0c;解决方案被有效实施。以下是一套专业的系统功…

Linux下的使用字符设备驱动框架编写ADC驱动 ——MQ-4传感器

ADC的原理 ADC 的作用&#xff1a;模拟信号转换为数字信号 模拟信号一般是指连续变化的电压信号&#xff0c;其数值在一定范围内变化。 而数字信号是由一系列离散的数字表示&#xff0c; 只能取有限的值&#xff0c;通常以二进制形式表示。 ADC通常由一个采样保持电路、一个…