1.实验目的

  1. 了解与熟悉数据探索、数据划分、数据填充;
  2. 了解与熟悉类别变量处理、建模与调优、测试与评估。

2.实验内容及结果截屏

  1. Spark机器学习流程

载入本章需要用到的程序包:

 调用spark的函数read()读取泰坦尼克号乘客数据集:

(2) 数据探索

调用数据框的函数count()得到数据框的样本数:

 (3)数据划分

调用数据框中函数randomSplit()随机抽取70%的样本作为训练集,并且仅保留有预测意义的变量:

 (4)数据填充

调用程序包pyspark.sql.functions中的函数isnull()得到变量age和fare是否为空的布尔型列:

①填充训练集

用中位数填充所有训练集中的数值变量,即变量age和fare:

 查看在原数据集中变量age和fare为空的记录填充后的情况:

②填充测试集

调用填充器的函数transform()填充测试集:

 (5)类别变量处理

①类别编码

调用类别编码器的函数fit()做训练,输入参数为数据框,返回训练后的类别编码器模型;调用类别编码器模型的函数transform()做训练集的类别编码,输入参数和返回结果都是数据框:

 调用类别编码器的函数transform()做测试集的类别编码:

 使用类别编码器模型的属性labels得到每个序数对应的类别:

②独热编码

调用独热编码器模型的函数transform()做训练集的独热编码,输入参数和返回结果都是数据框:

 调用独热编码器的函数transform()做测试集的独热编码:

 (6)建模与调优

①向量化

调用向量封装器的函数transform()做训练集的向量封装,将预测变量封装为名为features的向量,输入参数和返回结果都是数据框:

调用向量封装器的函数transform()做测试集的向量封装:

缺乏机器学习模型所需要的元数据(如类别数量、独立值等)调用类别编码器做变换:

 只保留预测变量和目标变量,并将目标变量重命名为label:

 在做完独热编码后,定义列索引对应的变量名:

②卡方特征选择

调用卡方特征选择器模型的函数transform()做训练集的特征选择,输入参数和返回结果都是数据框:

 使用特征选择器模型的属性selectedFeatures得到选择特征的序号,并进一步得到变量名称:

 (7)建模与调优

①创建机器学习模型

调用程序包pyspark.ml.classification中的构造函数DecisionTreeClassifier()创建决策树分类器:

②超参数调优

调用决策树分类器的函数explainParams()得到超参数列表和每个超参数的默认值:

 定义超参数调优算法——调用程序包pyspark.ml.tuning中的构造函数ParamGridBuilder()创建网格搜索超参数调优器:

 定义超参数的搜索范围——调用网格搜索超参数调优器的函数build()创建超参数字典:

 定义重采样策略——调用程序包pyspark.ml.tuning中的构造函数CrossValidator()创建交叉验证器:

 执行超参数调优——调用交叉验证器的函数fit()做超参数调优,输入参数为数据框,返回训练后的交叉验证器模型:

 3.实验分析及小结

       在此次实验过程中,我了解了数据探索、数据划分、数据填充,同时也了解了类别变量处理、建模与调优、测试与评估。在实验过程中,因步步紧跟实验指导,我没有发生什么问题。在之后的实验中,我也会更加认真地学习、理解代码,同时尽可能减少粗心导致的错误。

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐