Spark CountVectorizer
时间:2020-01-09
本文章向大家介绍Spark CountVectorizer,主要包括Spark CountVectorizer使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、概念
* CountVectorizer和CountVectorizerModel旨在帮助将文本文档的集合转换为令牌计数的向量。 * 当先验字典不可用时,CountVectorizer可用作估计器以提取词汇表并生成CountVectorizerModel。 * 该模型为词汇表上的文档生成稀疏向量表示方式,然后可以将其传递给其他算法,例如LDA。 * * 在拟合过程中,CountVectorizer将选择整个语料库中按词频排列的前vocabSize词。 * 可选参数minDF还通过指定一个术语必须出现在词汇表中的最小数量(或小于1.0的分数)来影响拟合过程。 * 另一个可选的二进制切换参数控制输出向量。如果将其设置为true,则所有非零计数都将设置为1。 * 这对于模拟二进制而不是整数计数的离散概率模型特别有用。
2、code
package com.home.spark.ml import org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession import org.apache.spark.ml.feature.{CountVectorizer, CountVectorizerModel} object Ex_CountVectorizer { def main(args: Array[String]): Unit = { val conf = new SparkConf(true).setMaster("local[*]").setAppName("spark ml label") val spark = SparkSession.builder().config(conf).getOrCreate() val df = spark.createDataFrame(Seq( (0, Array("a", "b", "c")), (1, Array("a", "b", "b", "c", "a")) )).toDF("id", "words") // fit a CountVectorizerModel from the corpus val cvModel: CountVectorizerModel = new CountVectorizer() .setInputCol("words") .setOutputCol("features") //词汇表最大容量,维度大小,本例是出现最高的三个单词 .setVocabSize(3) //至少在两个文档中出现过的词 .setMinDF(2) .fit(df) //查看词汇表里的单词 println("vocabulary词库:"+cvModel.vocabulary.mkString(",")) //b,a,c cvModel.transform(df).show(false) // todo features表示向量,表示模型词库在待训练文本中出现向量标识 // 按照词库(b,a,c)的顺序,在df中出现的词向量,即(维度大小,[序号],[频率]) // vocabulary词库:b,a,c // +---+---------------+-------------------------+ // |id |words |features | // +---+---------------+-------------------------+ // |0 |[a, b, c] |(3,[0,1,2],[1.0,1.0,1.0])| // |1 |[a, b, b, c, a]|(3,[0,1,2],[2.0,2.0,1.0])| // +---+---------------+-------------------------+ val model = new CountVectorizerModel(Array("d","a","f","c")) .setInputCol("words").setOutputCol("features") model.transform(df).show(false) // +---+---------------+-------------------+ // |id |words |features | // +---+---------------+-------------------+ // |0 |[a, b, c] |(4,[1,3],[1.0,1.0])| // |1 |[a, b, b, c, a]|(4,[1,3],[2.0,1.0])| // +---+---------------+-------------------+ spark.stop() } }
原文地址:https://www.cnblogs.com/asker009/p/12172404.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux中ftp服务搭建需要注意的地方
- CentOS下使用LibreOffice实现文档格式的转换方式
- 详解在Linux中怎么使用cron计划任务
- Linux系统删除文件夹和文件的命令
- 详解Linux防火墙iptables禁IP与解封IP常用命令
- 在Ubuntu 16.04 Server上安装Zabbix的方法
- Centos7.3安装部署最新版Zabbix3.4的方法(图文)
- Linux系统下移植busybox中mkfs.vfat命令
- Linux服务器配置ip白名单防止远程登录以及端口暴露的问题
- Ubuntu上释放空间的5种简单方法
- Linux下Redis允许远程连接的实现方法
- Linux Socket 编程简介和实现
- Linux (Ubuntu 18.04) 下安装vim编辑器的方法
- 把windows下的字体安装到Linux系统下的方法介绍
- Ubuntu 7.10修改软件源的方法