Apache Spark 机器学习 特征转换 1

分词器(Tokenizer)

分词是一个处理过程,其将文本句子分割成一系列独立的单词词汇集合,Spark提供Tokenizer分词器类,其提供的功能是使用分隔符的方式处理文本句子的特征转换,Spark提供RegexTokenizer分词器类,其提供的功能是使用正则表达式的方式处理文本句子的特征转换,默认的分隔符是空格,其正则表达式是\\s+,该表达式表示的意思是一个或者多个空格作为分词器的分隔符。

如上所示,data创建了三行记录,每行记录对应一个文本句子。Schema定义一个两列的数据表格,第一列是id,表示行记录的序号,第二列是sentence,表示行记录的文本句子。sentenceDataFrame使用data以及schema创建一个数据框架。tokenizer定义一个分词器,输入sentence列,输出words单词词汇集合列。regexTokenizer定义一个正则表达式的分词器,其匹配的正则表达式是\\W,该表达式表示的意思是匹配每个单词。countTokens定义一个分词计数器,用于统计分词器所得的单词词汇集合的大小。tokenized以及regexTokenized是分词所得的单词词汇集合。

StopWordsRemover

该转换器提供在单词分割的过程中,删除一些没有实质性意义的单词,例如,英文句子中的a、the。

如上所示,对输入的原文进行转换,输出合法的单词词汇集合。

如上所示,使用Java代码对输入的数据集,执行对应的转换,输出合法的单词词汇集合。其中,remover定义一个过滤不合法单词的转换器,data定义一个输入的原文句子,schema定义一个数据表格,dataset使用data以及schema创建一个数据框架,remover对数据框架执行转换。

n-gram

该转换器是指对原文句子执行转换,输出一个包括n个单词的单词序列的集合。

如上所示,使用Java代码对输入的原文句子执行n-gram的转换。

如上所示,使用scala的本地单元测试环境对原文句子的数据集合执行n-gram的转换,最后,输出n-grams的数据集合,其中n-gram对应2-gram。

Binarizer

该转换器是对数字特征的二元分类转换器,其设定一个临界值,小于临界值的是一种分类,大于临界值的是其他分类。

如上所示,使用Java代码对输入的数字特征执行转换,其中,data定义输入的数字特征,schema定义一个数据表格,包括id以及feature两列,continuousDataFrame定义一个数据框架,binarizer定义一个二元分类转换器,binarizedDataFrame是使用二元分类转换器对数据集合执行二元分类。

如上所示,使用scala语言执行二元分类的转换,其中,小于临界值的数字特征被转换成0.0,大于临界值的数字特征被转换成1.0。

(未完待续)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wangys2006

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

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

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

打赏作者

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

抵扣说明:

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

余额充值