《手把手教你实现PySpark机器学习项目——回归算法.docx》由会员分享,可在线阅读,更多相关《手把手教你实现PySpark机器学习项目——回归算法.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、手把手教你实现PySpark机器学习项目回归算法11月30日,2021亚马逊云科技re:Invent全球大会,即将浩大开启!2021re:Invent十周年度十分活动,内容的饕餮盛宴,涵盖产品、行业、社区等专题!立即预约|hecongqing来源|AI算法之心ID:AIHeartForYou【导读】PySpark作为工业界常用于处理大数据和分布式计算的工具十分是在算法建模时起到了非常大的作用。PySpark怎样建模呢这篇文章手把手带你入门PySpark提早感受工业界的建模经过任务简介在电商中解析用户在不同品类的各个产品的购置力是非常重要的这将有助于他们为不同产品的客户创立个性化的产品。在这篇文
2、章中笔者在真实的数据集中手把手实现怎样预测用户在不同品类的各个产品的购置行为。s:/datahack.analyticsvidhya/contest/black-friday/数据集简介某零售公司想要解析针对不同类别的各种产品的顾客购置行为购置量。他们为上个月选定的大批量产品共享了各种客户的购置汇总。该数据集还包含客户人口统计信息(age,gender,maritalstatus,city_type,stay_in_current_city)产品详细信息product_idandproductcategory和上个月的purchase_amount总数。如今他们祈望建立一个模型来预测客户对各种
3、产品的购置量这将有助于他们为不同产品的客户创立个性化的产品。手把手实战工程1.导入数据这里我们使用PySpark的读数据接口read.csv读取数据以及pandas读取数据接口迷之相似。2.分析数据的类型要查看Dataframe中列的类型可以使用printSchema()方法。让我们在train上应用printSchema()它将以树格式打印形式。3.预览数据集在PySpark中我们使用head()方法预览数据集以查看Dataframe的前n行就像python中的pandas一样。我们需要在head方法中提供一个参数(行数)。让我们看一下train的前5行。train.head(5)Row(U
4、ser_ID1000001,Product_IDP00069042,GenderF,Age0-17,Occupation10,City_CategoryA,Stay_In_Current_City_Years2,Marital_Status0,Product_Category_13,Product_Category_2None,Product_Category_3None,Purchase8370),Row(User_ID1000001,Product_IDP00248942,GenderF,Age0-17,Occupation10,City_CategoryA,Stay_In_Current
5、_City_Years2,Marital_Status0,Product_Category_11,Product_Category_26,Product_Category_314,Purchase15200),Row(User_ID1000001,Product_IDP00087842,GenderF,Age0-17,Occupation10,City_CategoryA,Stay_In_Current_City_Years2,Marital_Status0,Product_Category_112,Product_Category_2None,Product_Category_3None,P
6、urchase1422),Row(User_ID1000001,Product_IDP00085442,GenderF,Age0-17,Occupation10,City_CategoryA,Stay_In_Current_City_Years2,Marital_Status0,Product_Category_112,Product_Category_214,Product_Category_3None,Purchase1057),Row(User_ID1000002,Product_IDP00285442,GenderM,Age55,Occupation16,City_CategoryC,
7、Stay_In_Current_City_Years4,Marital_Status0,Product_Category_18,Product_Category_2None,Product_Category_3None,Purchase7969)要查看数据框架中的行数我们需要调用方法count()。让我们核对一下train上的行数。Pandas以及Spark的count方法是不同的。4.插补缺失值通过调用drop()方法可以检查train上非空数值的个数并进展测试。默认情况下drop()方法将删除包含任何空值的行。我们还可以通过设置参数“all,当且仅当该行所有参数都为null时以删除该行。这
8、与pandas上的drop方法类似。在这里为了填充简单我使用-1来填充train以及test的null值。固然这不是一个很好的填充方法你可以选择其他的填充方式。5.分析数值特征我们还可以使用describe()方法查看Dataframe列的各种汇总统计信息它显示了数字变量的统计信息。要显示结果我们需要调用show()方法。上面看起来好似比拟乱这里我们选择某一列来看看。让我们从一个列中选择一个名为“User_ID的列我们需要调用一个方法select并传递我们想要选择的列名。select方法将显示所选列的结果。我们还可以通过提供用逗号分隔的列名从数据框架中选择多个列。为了建立一个模型我们需要在“t
9、rain以及“test中看到分类特征的分布。这里我只对Product_ID显示这个但是我们可以以对任何分类特性执行一样的操作。让我们看看在“train以及“test中Product_ID的不同类别的数量。这可以通过应用distinct()以及count()方法来实现。在计算“train以及“test的不同值的数量后我们可以看到“train以及“test有更多的类别。让我们使用相减方法检查Product_ID的类别这些类别正在test中但不在“train中。我们可以以对所有的分类特征做同样的处理。以上你可以看到46个不同的类别是在test中而不在train中。在这种情况下我们要么采集更多关于它们
10、的数据要么跳过那些类别(无效类别)的“test。我们还需要通过在Product_ID上应用StringIndexer转换将分类列转换为标签该转换将标签的Product_ID列编码为标签索引的列。在上面我们将fit()方法应用于“train数据框架上构建了一个标签。稍后我们将使用这个标签来转换我们的train以及“test。让我们在labeller的帮助下转换我们的train以及test的Dataframe。我们需要调用transform方法。我们将把转换结果存储在Train1以及Test1中。上面已经显示了我们在以前的trainDataframe中成功的添加了一个转化后的列“product_i
11、d_trans(Train1Dataframe)。8.选择特征来构建机器学习模型首先我们需要从pyspark.ml.feature导入RFormula然后我们需要在这个公式中指定依赖以及独立的列我们还必须为为features列以及label列指定名称。在创立了这个公式之后我们需要将这个公式应用到我们的Train1上并通过这个公式转换Train1,Test1。让我们看看怎样做到这一点在拟合变换train1之后在应用了这个公式之后我们可以看到train1以及test1有两个额外的列称为features以及label并对我们在公式中指定的列进展标记(featuresColfeatures以及labe
12、lCollabel)。直观上train1以及test1中的features列中的所有分类变量都被转换为数值数值变量与之前应用ML时一样。我们还可以查看train1以及test1中的列特性以及标签。9.建立机器学习模型在应用RFormula以及转换Dataframe之后我们如今需要根据这些数据开发机器学习模型。我想为这个任务应用一个随机森林回归。让我们导入一个在pyspark.ml中定义的随机森林回归器。然后建立一个叫做rf的模型。我将使用随机森林算法的默认参数。在创立一个模型rf之后我们需要将train1数据划分为train_cv以及test_cv进展穿插验证。这里我们将train1数据区域划
13、分为train_cv的70%以及test_cv的30%。在train_cv上建立模型在test_cv上进展预测。结果将保存在predictions中。10.模型效果评估让我们评估对test_cv的预测看看rmse以及mse是多少。为了评估模型我们需要从pyspark.ml.evaluation中导入RegressionEvaluator。我们必须为此创立一个对象。有一种方法叫evaluateforevaluator它对模型求值。我们需要为此指定度量标准。经过计算我们可以看到我们的rmse是3827.767295494888。如今我们将在所有的train1数据集上再次训练一个模型。预测之后我们得
14、到测试集预测结果并将其保存成csv文件。写入csv文件后(submission.csv)。我们可以上传我们的第一个解决方案来查看分数我得到的分数是3844.20920215983。总结在本文中我以一个真实案例介绍了PySpark建模流程。这只是本系列文章的开场。在接下来的几周我将继续共享PySpark使用的教程。同时假如你有任何问题或你想对我要讲的内容提出任何建议欢送留言。*本文为AI科技大本营转载文章转载请联络原精彩推荐2019中国大数据技术大会BDTC再度来袭豪华主席阵容及百位技术专家齐聚15场优选专题技术以及行业论坛超强干货技术剖析行业理论立体解读深化解析热门技术在行业中的理论落地。6.6折票限时特惠立减1400元学生票仅599元推荐浏览AI科技大本营