【大数据技术】Spark MLlib机器学习特征抽取 TF-IDF统计词频实战(附源码和数据集)

简介: 【大数据技术】Spark MLlib机器学习特征抽取 TF-IDF统计词频实战(附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

特征抽取 TF-IDF

TF-IDF是两个统计量的乘积,即词频(Term Frequency, TF)和逆向文档频率(Inverse Document Frequency, IDF)。它们各自有不同的计算方法。

TF是一个文档(去除停用词之后)中某个词出现的次数。它用来度量词对文档的重要程度,TF越大,该词在文档中就越重要。IDF逆向文档频率,是指文档集合中的总文档数除以含有该词的文档数,再取以10为底的对数。

TF-IDF的主要思想是如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为这个词或者短语具有很好的类别区分能力

具体实现步骤如下

(1)新建MAVEN项目,名称为spark-mlllib

(2)数据准备。新建一个文本文件,包含四行数据,内容如下:

hello mllib hello spark
goodBye spark
hello spark
goodBye spark

(3)新建Scala类,功能是计算单词的TF –IDF

创建TF计算实例

val hashingTF = new HashingTF()

//计算文档TF值

val tf = hashingTF.transform(documents).cache()
    println("计算单词出现的次数结果为:")
    tf.foreach(println)

//创建IDF实例并计算

val idf = new IDF().fit(tf)

//计算TF_IDF词频

val tf_idfRDD: RDD[linalg.Vector] = idf.transform(tf)

统计结果如下

部分代码如下

package com.etc
import org.apache.spark.mllib.feature.{HashingTF, IDF}
import org.apache.spark.mllib.linalg
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object TF_IDF {
  def main(args: Array[String]) {
    //创建环境变量
    val conf = new SparkConf()
      //设置本地化处理
      .setMaster("local")
      //设定名称
      .setAppName("TF_IDF") //设定名称
    val sc = new SparkContext(conf)
    //设置日志级别
    sc.setLogLevel("error")
    //读取数据并将句子分割成单词
    val documents = sc.textFile("a.txt")
      .map(_.split(" ").toSeq)
    println("分词的结果为:")
    documents.foreach(println)
    //创建TF计算实例
    val hashingTF = new HashingTF()
    //计算文档TF值
    val tf = hashingTF.transform(documents).cache()
    println("计算单词出现的次数结果为:")
    tf.foreach(println)
    //创建IDF实例并计算
    val idf = new IDF().fit(tf)
    //计算TF_IDF词频
    val tf_idfRDD: RDD[linalg.Vector] = idf.transform(tf) //计算TF_IDF词频
    println("计算TF_IDF值:")
     tf_idfRDD.foreach(println)
  }
}

创作不易 觉得有帮助请点赞关注收藏~~~

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
存储 监控 NoSQL
Redis HyperLogLog: 高效统计大数据集的神秘利器
Redis HyperLogLog: 高效统计大数据集的神秘利器
275 1
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
1140 1
|
6月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
382 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
976 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
226 3
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之如何实现根据商品维度统计每件商品的断货时长的功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
141 5
|
分布式计算 Hadoop 大数据
大数据技术:Hadoop与Spark的对比
【6月更文挑战第15天】**Hadoop与Spark对比摘要** Hadoop是分布式系统基础架构,擅长处理大规模批处理任务,依赖HDFS和MapReduce,具有高可靠性和生态多样性。Spark是快速数据处理引擎,侧重内存计算,提供多语言接口,支持机器学习和流处理,处理速度远超Hadoop,适合实时分析和交互式查询。两者在资源占用和生态系统上有差异,适用于不同应用场景。选择时需依据具体需求。
|
分布式计算 监控 大数据
spark实战:实现分区内求最大值,分区间求和以及获取日志文件固定日期的请求路径
spark实战:实现分区内求最大值,分区间求和以及获取日志文件固定日期的请求路径
235 1
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之如何解决数据集查询超时
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。