Apache Spark 机器学习 特征抽取 4-2

news2025/2/27 2:49:50

Word2Vec

单词向量化是一个估算器,将文档转换成一个按照固定顺序排列的单词序列,然后,训练成一个Word2VecModel单词向量化的模型,该模型将每个单词映射成一个唯一性的、固定大小的向量集,对每个文档的所有单词进行平均,将文档转换成一个向量集,该向量集可以作为预测的特征集、用于计算文档的相似性,或者其他文本处理领域。

代码示例

如上所示,data是定义了三行记录的文档数据集,schema定义了一个数据表的元数据信息,第一列text是原文,documentDF使用data以及schema创建了一个数据框架用于特征提取,word2Vec定义一个单词向量化的特征估算器,model是使用word2Vec对数据集documentDF训练成一个模型,result对数据特征进行预测,最后,输出预测的结果。

CountVectorizer

是一个用于对向量集进行计数的估算器,CountVectorizer估算器以及CountVectorizerModel模型是对输入的文档集转换成每个文档的分词集合,再对每个文档中的单词进行计数,输出每个文档中每个单词的统计总数,其使用的稀疏集合表示每个文档。

代码示例

如上所示,定义一个文档集合,表示两行记录。

如上所示,使用CountVectorizer估算器对文档集合进行训练得到CountVectorizerModel,该模型的训练结果中,第一列id表示文档的序号,第二列表texts表示原文,第三列vector表示一个向量集,该向量集的第一个元素表示单词的总数,第二个元素表示单词对应的序号,0表示a,1表示b,2表示c,第三个元素表示每个单词的统计数,第一行文档a出现1、b出现1次、c出现1次,第二行文档a出现2次、b出现2次、c出现1次。

如上所示,data是对应的文档,schema定义数据集的元数据信息,第一列text表示原文,df使用data以及shcema定义了一个数据框架,cvModel是使用CountVectorizer训练而成的一个向量集计数模型,cvm是以其他方式定义一个模型,最后,进行数据集预测、输出预测结果。

FeatureHasher

特征哈希器是将分类特征或者数值特征转换成一个指定维度数的特征向量集,一般情况下,该转换器是对多个列进行转换,每个列的类型是分类特征或者数值特征,根据数据类型的哈希算法如下所示:

  •  数值类型的列,使用列的名称计算哈希值,映射其值到特征向量集对应的索引位置

  • 字符串类型的列,使用key=value的方式计算哈希值,映射其值到特征向量集对应的索引位置

  • 布尔类型的列,使用key=false或者key=true的方式计算哈希值,映射其值到特征向量集对应的索引位置

如上所示,输入的数据样本,包括4列、4行记录,第一个列的数据类型是数值、第二列的数据类型是布尔、第三列的数据类型是字符串数值、第四列的数据类型是字符串。

如上所示,使用FeatureHasher哈希器转换成特征向量集。

如上所示,data是定义的4列4行的数据样本,schema是定义的数据存储格式,dataset是创建一个数据框架,hasher是定义一个FeatureHasher哈希器,featurized是已经转换的特征向量集。

Spark代码单元测试

如上所示,从apache spark官方网址下载对应的版本。

如上所示,运行bin目录下的spark-shell命令,启动scala运行环境。

如上所示,输入scala的代码,执行特征转换,输出转换的特征向量集。

(未完待续)

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

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

相关文章

【数据结构和算法】实现线性表中的静态、动态顺序表

本文是数据结构的开篇,上文学习了关于使用C语言实现静态、动态、文件操作的通讯录,其中使用到了结构体这一类型,实际上,是可以属于数据结构的内容,接下来我们来了解一下顺序表的相关内容。 目录 前言 一、线性表 一…

流批一体计算引擎-6-[Flink]的Python DataStream API程序

参考官方Python API文档 1 IDEA中运行Flink 从Flink 1.11版本开始, PyFlink 作业支持在 Windows 系统上运行,因此您也可以在 Windows 上开发和调试 PyFlink 作业了。 1.1 环境配置 pip3 install apache-flink1.15.3 CMD>set PATH查看环境变量 CMD>set JAV…

对JDBC驱动注册--DriverManager.registerDriver和Class.forName(driverClass)的理解

对JDBC驱动注册–DriverManager.registerDriver和Class.forName(driverClass)的理解 JDBC提供了独立于数据库的统一API,MySQL、Oracle等数据库公司都可以基于这个标准接口来进行开发。包括java.sql包下的Driver,Connection,Statement&#x…

注解方式管理Bean

1.注解方式创建对象IOC 导入依赖 aop Component(父注解) 放在类上,用于标记,告诉spring当前类需要由容器实例化bean并放入容器中 该注解有三个子注解 Controller 用于实例化controller层bean Service 用于实例化service层bean Repository 用于实例化持久层bean 当不确定是哪一…

【刷题大本营】二叉树进阶oj题(动图讲解,附代码及题目链接)

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️小林爱敲代码       🛰️欢迎关注:👍点赞🙌收藏✍️留言       这篇文章给大家带来一…

RK3399平台开发系列讲解(文件系统篇)文件回写过程介绍

🚀返回专栏总目录 文章目录 一、编程接口二、回写过程2.1、周期回写2.2、强制回写2.3、系统调用sync沉淀、分享、成长,让自己和他人都能有所收获!😄 📢进程写文件时,内核的文件系统模块把数据写到文件的页缓存,没有立即写回到存储设备。文件系统模块会定期把脏页(即…

[JavaEE]线程池

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1. 线程池是什么? 2. 线程池的实现原理 3. 标准…

Eureka集群构建步骤

目录 一、Eureka集群原理说明 二、EurekaServer集群环境构建步骤 三、将支付服务8001微服务发布到上面2台Eureka集群配置中 四、将订单服务80微服务发布到上面2台Eureka集群配置中 五、测试01 六、支付服务提供者8001集群环境构建 七、负载均衡 八、测试02 一、Eureka集…

论文投稿指南——中文核心期刊推荐(建筑科学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

前同事居然因为 Pycharm 的这个功能,即使离职三年也依然经常被请去喝茶~

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

教你一键生成形如Springboot的高大上banner打印效果

背景 今天闲来无聊,想搞一个类似于Springboot项目启动时打印效果,如下图: 问题解决方案 那这个打印效果怎么实现的呢? 其实,对于这个中效果实现起来也是很简单的。毕竟依托于Springboot强大的框架,任何问…

网狐大联盟非联盟成员无法创建房间解决-暂时不可创建当前游戏,请选择其他游戏!

"暂时不可创建当前游戏,请选择其他游戏!" 问题所有lua文件定位:

恶意代码分析实战 16 Shellcode分析

16.1 Lab19-01 将程序载入IDA。 一堆ecx自增的操作。到200是正常的代码段。 shellcode的解码器也是从这里开始的,一开始的xor用于清空ecx,之后将18dh赋给cx,jmp来到loc_21f,而在下图可以看到loc_21调用sub_208,在call指令执行后&#xff0…

40.Isaac教程--3D 物体姿态优化

3D 物体姿态优化 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 3D 物体姿态优化在操作等应用中起着至关重要的作用,在这些应用中,检测到的物体的位置会影响机器人的整体性能。 Isaac SDK 中的 3D 对象姿势优化应用程序提…

7. 好客租房-项目日常推进ing

7. 好客租房-项目日常推进ing 本章节不涉及大量内容,主要是为了推荐项目代码日常进度而设置, 包括添加mock接口, 添加更新房源接口, 为系统添加缓存. 7.1 为前端系统提供mock服务 往往在项目开发中, 为实现前后端并行开发,后端需要对前端所有的请求都都进行支持。…

2022年度总结——2022我在CSDN的那些事暨2023我的目标展望:Pursue freedom Realize self-worth

📋前言 关于年度征文: 活动地址:2022年度征文活动页-CSDN 📚文章目录 📋前言 🎯再见2022,2023新年快乐 🎯回顾2022——“我”与我在CSDN的那些事 🧩伊始——CSDN&…

Allegro如何做镂空丝印操作指导

Allegro如何做镂空丝印操作指导 在PCB设计丝印的时候,会需要画镂空的丝印,Allegro升级到了172版本的时候,可以画镂空的丝印,如下图 具体操作如下 选择Shape Add Rect命令Options选择需要画到的层面,比如Silkscreen TOP层

Lesson1:走进C++的殿堂

首先在此声明一下,C的学习需要C语言的基础,不先学习C语言而直接学C是不现实的。市面上任何一本C的书籍,前几章的内容一定涉及到C语言的学习。 一、什么是C 照片上的这位老人便是C语言之父——本贾尼斯特劳斯特卢普(Bjarne Stroust…

JavaScript学习

JavaScript 是一门跨平台、面向对象的脚本语言,而Java语言也是跨平台的、面向对象的语言,只不过Java是编译语言,是需要编译成字节码文件才能运行的;JavaScript是脚本语言,不需要编译,由浏览器直接解析并执行…

Spring核心模块解析—BeanDifinition。

BeanDifinition前言什么是BeanDefinition?为什么要有BeanDefinition?BeanDifinition重点源码总结前言 Spring中的BeanDifinition在Bean的实例化流程中占有着非常重要的角色,如果你不了解BeanDifinition的话,面试或者学习Bean的生…