当前位置: 首页 > 科技观察

使用随机森林分类算法进行鸢尾花数据分类训练是一种怎样的体验?

时间:2023-03-21 19:32:55 科技观察

MLlib是Spark的机器学习(ML)库,旨在简化机器学习的工程实践,便于扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,以及低级优化原语和高级管道API。MLllib目前分为两个代码包:spark.mllib包含了基于RDD的原始算法API。spark.ml提供了一个基于DataFrames的高级API,可用于构建机器学习管道。FEA-spk技术的机器学习是基于spark.ml包的。spark.ml包基于DataFrame,未来将成为Spark机器学习的主要API。可以在分布式集群上进行大规模的机器学习模型训练,并且可以可视化数据。一、随机森林分类算法简介随机森林,顾名思义,就是用一种随机的方式构建森林。森林中有许多决策树。随机森林中的每棵决策树之间没有联系。得到森林后,当有新的输入样本进入时,让森林中的每棵决策树分别进行判断,看样本应该属于哪一类(对应分类算法),然后看是否选择了哪一类最多,则预测该样本属于该类。使用SparkMLlib随机森林算法存在不足,需要改进!具体来说,使用SparkMLlib进行模型训练,需要进行大量的数据转换,列聚合成向量等,非常麻烦,不能做数据可视化。FEA-spk技术可以很好的解决这些问题。只需要一个命令就可以训练模型,并且可以将结果数据可视化。2.鸢尾花数据分类训练案例下面是使用随机森林分类算法对鸢尾花数据进行分类的例子。1.数据准备原始数据及相应说明可在https://pan.baidu.com/s/1c2d0hpA下载。基于此,我添加了标题信息。这里将下载的数据放在hdfs上进行读取。2.Iris数据训练的具体步骤(1)使用FEA-spk技术,首先创建一个spk连接,所有操作都在其context中进行。在fea界面运行如下命令(2)加载数据,数据在hdfs上,数据格式为csv文件格式,目录为/data/iris_data.txt(3)使用ML_si方法改变字符labelintoindex(4)将特征列的类型转换为double类型,因为spark.ml只支持double类型,使用ML_double方法(5)使用随机森林模型进行训练在训练RandomForest模型时,我们需要设置几个参数:maxBins***install框数,为了近似统计变量,比如变量有100个值,我只分成10段统计,默认值为32;numTrees森林中有多少棵树,默认值为20;minInstancesPerNode每个节点的最小实例,默认值为1;minInfoGain为最小信息增益,默认值为0.0;maxDepth***树的深度,默认值为5;maxMemoryInMB***内存MB单位,值越大,一次处理的节点划分越多,默认值为256;cacheNodeIds是否缓存nodeids,缓存可以加速深度树的训练,默认值为False;checkpointIntervalcheckpointinterval是固化一次迭代多少次,默认值是10;impurityrandomforest有三种方法,entropy,gini,variance,regression必须是variance,默认值是gini;seed采样种子,种子不变,采样结果不变,默认值为None;featureSubsetStrategyauto:默认参数。让算法自己决定每棵树使用多少条数据。使用的参数如下图所示(6)对训练好的模型打分,可以看到准确率达到了97%(7)将训练好的模型保存到hdfs中,以备下次使用。这个很实用,对于模型比较大的情况下,利用HDFS的分布式结构可以提高加载性能。(8)加载保存在hdfs上的模型(9)预测加载的模型。预测列是预测结果。以上就是使用FEA-spk技术进行机器学习的步骤,非常适合数据分析和处理大规模Data,简单、强大、可视化,即使你不会Java\Python,也可以玩火花!