《《Spark大数据技术与应用案例教程》教案第16课提取鸢尾花的特征.docx》由会员分享,可在线阅读,更多相关《《Spark大数据技术与应用案例教程》教案第16课提取鸢尾花的特征.docx(9页珍藏版)》请在第壹文秘上搜索。
1、课题提取莺尾花的特征课时2课时(90min)教学目标知识技能目标:(1)掌握常用的特征提取算法(2)掌握常用的特征转换算法(3)掌握常用的特征选择算法素质目标:(1)能熟练运用机器学习算法解决日常生活中的数据分析问题(2)培养自主学习意识,提升实践操作能力教学重难点教学重点:SParkMLlib的特征取、特征转换和特征!蟒教学难点:使用SparkMLlib的特征提取、特征转换和特征选择等特征化工具处理数据教学方法案例分析法、问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软
2、件,完成课前任务了解SParkMLlib的特征提取、特征转换和特征选择算法。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:什么是数据特征?【学生】思考、举用答传授新知【教师】通过学生的回答引入新知,介绍特征提取、特征转换和特征选择的相关知识一、特征提取特征提取是指从原始数据中提取有用的、可数的、可比较的特征的过程。它可以将复杂的数据转换成便于分析和处理的数据形式,同时减少计算量和存储空间.pyspark.ml包椅共的梯睡取算;抱括TF-IDFxWord2Vec等,1.TF-IDF【教师】介绍TF-IDF算法词频-逆文档频率(ter
3、mfrequency-inversedocumentfrequency.TF-IDF)算法是文本挖掘领域常用的特征提取方法。它用于评估一个词语对于语料库中的某个文档的重要程度,可应用于搜索引擎、推荐系统、文本分类、聚类分析等多个领域。词频(termfrequency,TF)表示一词语在文档中出现的频率。逆文档频率(inversedocumentfrequency,IDF)用于衡量一个词语在整个语料库中的稀有程度。TF-IDF算法的工作原理如下。一、笛T怀闩怀某个词语在文档中出现的次数(1)计算词频。词频=-FWsV、-文档的总词语数c,也.西怀宓b地幅它1(语料库的文档总数、(2)计算逆文档频
4、率。逆文粕频率一log(有小2、干五的五工也将J。包含该词语的文档数+1(3)计算TF-IDF.TF-IDF=词频?逆文档频率在SparkMLlib中,TF-IDF算法的实现步骤如下。首先使用HaShingTFo方法计算词频,该方法的基本格式如下。HashingTF(inputCol,OutputCol,numFeatures,binary)其中,参数inputCol表示输入列的名称;参数OUlPUtCOI表示输出列的名称;参数numFeatures(可选)表示特征向量的维度大小,默认值为262144;参数binary(可选)表示是否将特征向量中的非零值设置为1,默认值为FalSe.然后使用I
5、DFO方法计算每个词语的TFIDF度量值,该方法的基本格式如下。IDF(inputCol,otputCol,minDocFreq)其中,参数inputCol表示输入列的名称,该输入列为HaShingTF()方法的输出列;参数OUtPUlCOI表示输出列的名称;参数minDocFreq(可选)表示词语至少出现在语料库中的minDocFreq个文档中才会被考虑,默认值为Oe【教师】通过例子,帮助学生掌握TF-IDF算法的应用【例5-1使用TF-IDF算法计算每个词语的TF-IDF度量值,输出结果如图5-5所示。IIIabeISlfeatures1二二:二二二二二二二二;二二二二二二二二二二二二二二
6、二二二二二二二二二二二二二二二二二二0I(2000.(202,467.845.891,1209,1263.1286.1S8J.1720,1996,(O.M471S05599453.0.W31471805599453.0.69314718055M4S3,0.0.0.28768207245178085.0.6931471805599453,0.28768207245178085,0.6931471805599453,0.6931471805599453.0.6931471805S99453)I|1(2000.(66.BO,344,466,6690,S91.1048.1209.1S7S,1585,1
7、69S).(0.693147180S5994S3.0.69314nBOSS9MS3.0.6931471SOSS99453.06931471805599453,0.6931471805599453.0.6931471805599453,0.0.0.6931471805599453.0.28768207245178085.0.6931471805599453.0.28768207245178085.0.28768207245178085)2I(2000.(7.40.312.488.547.K3JS1.891,1286.1S85.1605.1695J.(0.69n47180559945J.0.693
8、H71805SMS3,0.6931471SOSS9M53.0.6931471805599453,0.6931471805S99453,0.6931471805599453.0.6931471805599453,0.0.0.28768207245178085,0.28768207245178085,0.6931471805599453t0.28768207245178085)|图5-5TFlDF算法的输出结果hadoopbogon-$pysparkfrompyspark.ml.featureimportHashingTF,IDFfrompyspark.sql.functionsimportspl
9、it#定义数据data=(0,ApacheSparkisafastandgenera!-purposeclustercomputingsystem),(1,Hadoopisanopen-sourcesoftwareframeworkforstoringandprocessingbigdata),(2,SparkandHadoopareoftenusedtogethertoprocesslarge-scaledatasets)# 创建DataFramedf=spark.createDataFrame(data,labels,text)# 将text列的文本拆分为单词,并将该列的列名修改为word
10、sdf=df.withColumn(words,split(df.tex(,)# 创建HashingTF对象hashingTF=HashingTF(inputCol=,words,OutputCol=rawFeatures,numFeatures=2(XX)# 执行转换操作,应用HaShingTF模型进行数据转换featurizedDa(a=hashingTF.transfrm(df)# 创建IDF对象idf=IDF(inputCol=rawFeatures,OutputCol=features*)# i川练IDF模型idfModel=idf.fit(FeaturizedData)# 应用ID
11、F模型进行数据转换rescaledData=idfModel.transfbn(featurizedData)#选择标签和特征列并显示结果rescaledData-select(labeIs,features).shoWftnmcate=False)【高手点拨】DataFrame的withColumn(columnName,COl)方法用于在现有DataFrame中添加、替换或修改列。其中,参数COlumnName表示要添加或修改的列的名称;参数col表示要添加或替换的列的值或表达式。在机器学习中,训练和测试模型的数据集可以不同也可以相同,即可以将数据集划分为训练集和测试集,也可以不划分。Sp
12、arkMLIib提供了一些训练好的模型,开发人员可以直接使用transfOrm()方法应用这些模型对数据进行转换操作。输出结果中特征列features的数据说明如表5-2所示。表5-2输出结果中特征列的数据说明特征列数据说明2000代表特征向量的维度大小为2000202.467,845,891.1209,1263,1286.1583.1720,1996oApache,Spark,is,a,fast,and,general-purpose,cluster,computing,system*的哈希值0.6931471805599453,0.6931471805599453,0.6931471805
13、599453.0.6931471805599453表示每个词语的TF-IDF度量值2.Word2Vec【教师】介绍WordZVec算法词向量(Word2Vec)是一种基于神经网络的自然语言处理模型,用于将词语表示为高维向量。WOrd2Vec模型一旦训练完成,就可以使用该模型获得每个词语的向量表示.这些向量可以作为输入特征用于各种任务,如文档分类、情感分析和推荐系统等。WOrd2Vec()方法的基本格式如下。Word2Vec(inputCol,outputCol,VectorSize,minCount,Partitions,maxIter,StepSize,seed,windowSize,max
14、SentenceLength,inputTokenizer,OutputWordEmbeddings)其中,常用参数的含义如下。inputCol:表示输入列的名称.OUtPUICol:表示输出列的名称。(详见教材)【小提示】本书只讲解每个方法的常用参数,未提到的参数请自行查阅官方文档进行学习。【教师】通过例子,帮助学生掌握Word2VeC算法的应用【例5-2使用VVord2Vec算法将单词表示为高维向量,输出结果如图5-6所示。hadoop()bogon$pysparkfrompyspark.ml.featureimportWord2Vecfrompyspark.sql.functionsim
15、portsplit,col#定义一些句子,每个句子分解为单词组成的列表Seq=IheardaboutSparkandIloveSpark.split(),IwishJavacouldusecaseclasses.split(,),Logisticregressionmodelsareneat.split()1顺建DataFrame,将列表中的每个元素转换为一行数据,并将列名命名为textdf=spark.createDataFrame(s,)forsinseq,text)舱!J建Word2Vec对象,设置输入和输出列、词向量的维度大小和最小词频word2Vec=Word2Vec(inputCol=text,outputCol=result,vectorSize=3,minCount=0)相Il练Word2Vec模型model=word2Vec.fit(df)#应用Word2Vec模型迸行数据转换