之前做了个基于鸢尾花的逻辑回归模型。本篇做的是使用真实数据的lr模型,遇到的一些问题,解决在此记录。
1 读取数据。因为之前在sklean上做的时候导出了csv文件,所以这里可以简单导入
这里做的是特征工程后的数据,后面考虑特征工程在spark上的实现。
2 把维度字段都放到features向量中,这里遇到点问题。本身数据为string.要转换成float才能用于向量,以及机器学习模型。
这里我用df.withColumn循环把string类型字段转换为float.(pandas 下的dataframe可以df.astype转换数据类型)
3 设计模型并训练。这里当对于之前的鸢尾花demo,使用了交叉验证,用来找出最优的超参数。这里有2*3=6种不同的超参数组合。
4模型评估。这里除了评估外,还展示了训练完最优的逻辑回归模型的相关参数。
总结:在小数据集上(w级别),sklean比spark ml快一些,spark需要一定的启动时间。在200W数据,20+维度上面,发现spark ml 比sklean在速度上有了一个大的提升。sklean的lr训练时间在30+分钟左右,spark ml的训练时间3分钟左右(spark为单机local模式,虚拟机4核4G内存)
1在公司的spark集群服务器上测试模型运算速度,时间上应该会有一个巨大提升。
2实现下在spark ml做特征工程部分。