《《Spark大数据技术与应用案例教程》教案第24课预测银行贷款用户是否存在.docx》由会员分享,可在线阅读,更多相关《《Spark大数据技术与应用案例教程》教案第24课预测银行贷款用户是否存在.docx(4页珍藏版)》请在优知文库上搜索。
1、课题预测银行贷款用户是否存在逾期还款的风险课时2课时(90min)教学目标知识技能目标:(1)掌握创建RDD的方法(2)掌握将RDD转换为DataFrame的方法(3)掌握使用SparkMLlib提供的算法解决实际问题的方法素质目标:综合应用所学知识,提升归纳总结能力和实践能力。教学重难点教学重点:SParkMLlib提供的算法教学难点:使用SparkMIJib提供的算法解决实际问题教学方法案例分析法、问答法、讨论法、i井授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请大
2、家回顾前面所学内容。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:SParkMLIib提供了哪些算法?【学生】思考、举手回答课堂实践【教师】描述和分析本次任务内容,并详细演示任务操作过程,引导学生进行操作【任务描述】本任务使用SParkMLIib提供的算法构建预测银行贷款用户是否存在逾期还款风险的模型。该模型可以根据贷款用户的多个特征(如年龄、月收入等),对用户的还款能力和信用风险进行评估,判断用户是否会逾期还款。银行使用这个模型可以快速预测贷款用户逾期还款的风险,从而决定是否批准该用户的贷款申请。【任务分析】本任务先读取数据创建
3、RDD,并将RDD转换为DataFrame;然后将多个特征列合并为单个特征列,并将字符串标签列转换为数值标签列;接着将数据集划分为训练集和测试集,并使用训练集训练决策树分类模型;最后使用训练好的模型预测用户是否会逾期还款,并评估模型的预测准确率。打开PyChaim,在CredilCard目录下新建CreditCardPredictionpy”文件,然后在该文件中编写应用程序,输出模型的预测结果和模型的预测准确率。实现步骤如下。步骤1创建SparkSession对象。步骤2A使用textFile()方法读取数据创建RDD(即rdd).步骤3A过滤掉标题行,保留有效数据,生成T新的RDD(即rdd
4、_map)首先使用firsl()方法获取标题行的内容header;然后使用filler。方法过滤掉标题行,并使用map()方法将除了标题行之外的数据行拆分为列表.(详见教材)【参考代码】frompyspark.sqlimportSparkSessionfrompyspark.sql.functionsimportcolfrompyspark.ml.featureimportVectorAssembler,StringIndexerfrompyspark.ml.classicationimportDecisionTreeClassifierfrompyspark.ml.evalua(ionimp
5、ortMulticlassciassincationEvaluator怆!建SparkSession对象SPark=SparkSession.builder.appName(prediction).getOrCreate()砌建RDDrdd=spark.sparkContext.textFile(file:/usr/local/spark/mycode/CreditCard/CreditCard_data.csv)# 过滤掉标题行,保留有效数据header=rdd.first()rdd_map=rdd.filter(lambdarow:row!=header).map(lambdarow:ro
6、w.split(,)# 将RDD转换为带有列名的DaIaFramedf=rdd_map.loDF(header.split(,H)# 重命名列df=df.withColumnRenamed(,2yrs,label)# 定义列表,存储需要转换为整数类型的列名columns_to_cast_int=age,family,Time30-59,Time60-89,Times90,RealEstate# 定义列表,存储需要转换为双精度浮点数类型的列名columns_to_cast_double=MonihlyIncome,UnsecuredLines,DebiRaiio,OpenCredil# 将指定列
7、的数据类型转换为整数类型forcolumn-nameincolumns_to_cast_int:df=df.withColumn(column_name,col(column-name).cast(int)# 将指定列的数据类型转换为双精度浮点数类型forcolumn-nameincolumns_to_cast_double:df=df.withColumn(column-name.col(column_name).cast(double)# 定义特征向量列表feature-columns=age,Monthlyincome,family,Time30-59,Time60-89,Times90
8、,UnsecuredLines.,DebRaiio.OpenCredit,RealEstate# 合并特征列能0建VeCtOrASSembler对象assembler=VectorAssembler(inputCols=feature-columns,outputCol=features)# 应用VeCIorASSembIer模型,并选取指定列data=assembler.iransform(df).select(labe,features)# 转换标签列能0建StringIndexer对象indexer=StringIndexer(inpulCol=labcl,outputCol=index
9、edLabel).fit(data)符串标签转换为数值标签indexed_data=indexer.transfn(data)# 划分训练集和测试集train-data,test_data=indexed-data.randonSplit(0.7,0.3,seed=42)# 预测用户是否会逾期还款舱0建DeCiSiOnTreeCIaSSifier对象dt=DeCiSiOnTreeQaSSifier(fealUreSCoI=features,IabeICoI=OndexedLabeI)胤1|练DeCiSiOnTreeCIaSSifier模型model=dt.fit(train-data)曲导到预
10、测结果predictions=model.transfbrm(test_data)# 输出预测结果predictions.select(features,label,prediction).Show(Iruncaie=FaIse)# 评估模型# 创建MulticlassciassificationEvaIuator对象evaluator=MulticlassClassificationEvaluator(labelCol=indexedLabePrediCIiOnCoI=prediction,metricName=,accuracy)# 计算模型的预测准确率accuracy=evaluator
11、.evaluate(predictions)# 输出模型的预测准确率Prin1(准确率:,accuracy)【运行结果】在PyCharm中运行代码,控制台输出预测结果和模型的预测准确率,如图7-8所示。从结果可以看出,模型的预测准确率约为0.9319,达到了较好的预测效果,证明该模型可以帮助银行预测贷款用户是否存在逾期还款的风险。(featuresIlabelIpredictionIl(l,l,2,3,6,49.,31e.,l.,l.e,.9999999)l.Il(l,efl,2,3,8,39.,6666.,l.,l.,3.0).Il(l,l,2,3,8,(53.,6747.,3.,l.,l.
12、)ll.Il(l,l,2,3,8,53.,725.,2.G,l.,5).Il(l,l,2,5,6,26.,ll.,l.,2.,.9999999)l.I(l,fl,2,5,6,27.,25.,l.,l.,.9999999).Il(l,l,2,5,6,28.,2782.,l.,l.,.9999999)l.Il(l,l,2,5,6,31.,l.,l.,lB,.9999999).Il(l,l,2,5,6,(33.,1994.,2.,6.,.9999999)11.Il(l,l,2,5,6,34.e,21e.,l.,2.,e.9999999)l.Il(l,e,l,2,5,6,35.,150.,3.,13.
13、,9999999)e11.Il(l,fl,2,5,6,45.,3666.0,l.,l.,.9999999)l.Il(l,l,2,5,6,48.,6101.,1,2.,.9999999)l.II(1,1,2,5,6,49.,312.,1.0,2.,.9999999)l.II(l,l,2,5,6f66.,185.,l.,l.,.9999999).Il(l,l,2,5,8,(53.e,64.,4.,3.,6.0)11.Il(ie,f1,2,6,24.8,265.8,l.,.9999999)ll.Il(l,l,2,6,29.0,165.,l.,.9999999).Il(l,1,2,6,29.,328.,2.,.9999999)l.Il(l,fl,2,6,3.G,l.,2.,.9999999).Ionlyshowingtop2rows准确率:.9318762497222839图7-8预测结果和模型的预测准确率【学生】聆听、理解,按照要求进行操作,如遇问题可询问老师【教师】巡堂辅导,及时解决学生遇到的问题【教师】简要总结本节课的要点课堂小结预测银行贷款用户是否存在逾期还款风险的操作【学生】总结回顾知识点作业布置【教师】布置课后作业请根据课堂所学知识,课后自己尝试评估和预测数据的操作.【学生】完成课后任务教学反思