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

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的代码,执行特征转换,输出转换的特征向量集。

(未完待续)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangys2006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值