此前用自己实现的随机森林算法,应用在titanic生还者预测的数据集上。事实上,有很多开源的算法包供我们使用。无论是本地的机器学习算法包sklearn 还是分布式的spark mllib,都是非常不错的选择。
  Spark是目前比较流行的分布式计算解决方案,同时支持集群模式和本地单机模式。由于其通过scala语言开发,原生支持scala,同时由于python在科学计算等领域的广泛应用,Spark也提供了python的接口。

Spark的常用操作详见官方文档:
http://spark.apache.org/docs/latest/programming-guide.html

在终端下面键入如下命令,切换到spark的目录,进入相应的环境:
cd $SPARK_HOME

cd ./bin

./pyspark

可以看到,出现了python 的版本号以及spark的logo

此时,仍然是输入一句,运行一句并输出。可以事先编辑好脚本保存为filename然后:

./spark-submit filename

下面给出详细的代码:

  1. import pandas as pd
  2. import numpy as np
  3. from pyspark.mllib.regression import LabeledPoint
  4. from pyspark.mllib.tree import RandomForest
  5. #将类别数量大于2的类别型变量进行重新编码,并把数据集变成labeledPoint格式
  6. #df=pd.read_csv('/home/kim/t.txt',index_col=0)
  7. #for col in ['Pclass','embrk']:
  8. #    values=df[col].drop_duplicates()
  9. #    for v in values:
  10. #        col_name=col+str(v)
  11. #        df[col_name]=(df[col]==v)
  12. #        df[col_name]=df[col_name].apply(lambda x:int(x))
  13. #df=df.drop(['Pclass','embrk'],axis=1)
  14. #df.to_csv('train_data')
  15. #读入数据集变成弹性分布式数据集RDD ,由于是有监督学习,需要转换为模型输入的格式LabeledPoint
  16. rdd=pyspark.SparkContext.textFile('/home/kim/train')
  17. train=rdd.map(lambda x:x.split(',')[1])
  18. train=train.map(lambda line:LabeledPoint(line[1],line[2:]))
  19. #模型训练
  20. model=RandomForest.trainClassifier\
  21. (train, numClasses=2, categoricalFeaturesInfo={},numTrees=1000,\
  22. featureSubsetStrategy="auto",impurity='gini', maxDepth=4, maxBins=32)
  23. #包含LabeledPoint对象的RDD,应用features方法返回其输入变量的值,label方法返回其真实类别
  24. data_p=train.map(lambda lp:lp.features)
  25. v=train.map(lambda lp:lp.label)
  26. prediction=model.predict(data_p)
  27. vp=v.zip(prediction)
  28. #最后输出模型在训练集上的正确率
  29. MSE=vp.map(lambda x:abs(x[0]-x[1]).sum())/vp.count()
  30. print("MEAN SQURE ERROR: "+str(MSE))
  1. import pandas as pd
  2. import numpy as np
  3. from pyspark.mllib.regression import LabeledPoint
  4. from pyspark.mllib.tree import RandomForest
  5.  
  6. #将类别数量大于2的类别型变量进行重新编码,并把数据集变成labeledPoint格式
  7. #df=pd.read_csv('/home/kim/t.txt',index_col=0)
  8. #for col in ['Pclass','embrk']:
  9. # values=df[col].drop_duplicates()
  10. # for v in values:
  11. # col_name=col+str(v)
  12. # df[col_name]=(df[col]==v)
  13. # df[col_name]=df[col_name].apply(lambda x:int(x))
  14. #df=df.drop(['Pclass','embrk'],axis=1)
  15. #df.to_csv('train_data')
  16.  
  17. #读入数据集变成弹性分布式数据集RDD ,由于是有监督学习,需要转换为模型输入的格式LabeledPoint
  18. rdd=pyspark.SparkContext.textFile('/home/kim/train')
  19. train=rdd.map(lambda x:x.split(',')[1])
  20. train=train.map(lambda line:LabeledPoint(line[1],line[2:]))
  21.  
  22. #模型训练
  23. model=RandomForest.trainClassifier\
  24. (train, numClasses=2, categoricalFeaturesInfo={},numTrees=1000,\
  25. featureSubsetStrategy="auto",impurity='gini', maxDepth=4, maxBins=32)
  26.  
  27. #包含LabeledPoint对象的RDD,应用features方法返回其输入变量的值,label方法返回其真实类别
  28. data_p=train.map(lambda lp:lp.features)
  29. v=train.map(lambda lp:lp.label)
  30. prediction=model.predict(data_p)
  31. vp=v.zip(prediction)
  32.  
  33. #最后输出模型在训练集上的正确率
  34. MSE=vp.map(lambda x:abs(x[0]-x[1]).sum())/vp.count()
  35. print("MEAN SQURE ERROR: "+str(MSE))

后面可以多加测试,例如:

使用更大规模的数据集;

将数据集划分为训练集测试集,在训练集上建模在测试集上评估模型性能;

使用mllib里面的其他算法并比较效果,等等

欢迎大家与我交流!

Spark mllib 随机森林算法的简单应用(附代码)的更多相关文章

  1. spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  2. 随机森林算法demo python spark

    关键参数 最重要的,常常需要调试以提高算法效果的有两个参数:numTrees,maxDepth. numTrees(决策树的个数):增加决策树的个数会降低预测结果的方差,这样在测试时会有更高的accu ...

  3. 使用基于Apache Spark的随机森林方法预测贷款风险

    使用基于Apache Spark的随机森林方法预测贷款风险   原文:Predicting Loan Credit Risk using Apache Spark Machine Learning R ...

  4. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  5. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

  6. R语言︱机器学习模型评估方案(以随机森林算法为例)

    笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评 ...

  7. Python机器学习笔记——随机森林算法

    随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为“代 ...

  8. 随机森林算法-Deep Dive

    0-写在前面 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器.该分类器最早由Leo Breiman和Adele Cutler提出.简单来说,是一种bagging的思想,采用bootstra ...

  9. 随机森林算法原理及OpenCV应用

    随机森林算法是机器学习.计算机视觉等领域内应用较为广泛的一个算法.它不仅可以用来做分类(包括二分类和多分类),也可用来做回归预测,也可以作为一种数据降维的手段. 在随机森林中,将生成很多的决策树,并不 ...

随机推荐

  1. oracle如何保证数据一致性和避免脏读

      oracle通过undo保证一致性读和不发生脏读 1.不发生脏读2.一致性读3. 事务槽(ITL)小解 1.不发生脏读 例如:用户A对表更新了,没有提交,用户B对进行查询,没有提交的更新不能出现在 ...

  2. Python 编程入门

    我喜欢直接了当, 这次主要是推荐蟒营大妈的 Python 入门课(https://py.101.camp), 还有不到一周就要开课了, 欢迎转发推荐~ 点击"夏日大作战:从小白到小能手的 P ...

  3. 软件包 javax.naming了解

    Context  此接口表示一个命名上下文,它由一组名称到对象的绑定组成. Name  Name 接口表示一个一般名称,即一个有序的组件序列. NameParser  此接口用于解析取自分层的名称空间 ...

  4. Android--Fragment嵌套的问题

    项目中遇到Fragment嵌套应用的问题 子Fragment中要用getChildFragmentManager()方法获取FragmentManager,否则会出问题!

  5. IDEA好用插件推荐

    Maven Helper:排查maven依赖冲突神器,强力推荐! Alibaba Java Coding Guidelines:阿里巴巴编程规范 CamelCase:驼峰命名工具,SHIFT + AL ...

  6. nfs挂载文件

    1. 安装必备插件  以防centos7默认没有启动nfs服务 yum -y install nfs-utils rpcbind # 启动 rpcbind 和配置开机自启动 systemctl sta ...

  7. NOI2000 青蛙过河[递推]

    也许更好的阅读体验 \(\mathcal{Description}\) 原题链接: Comet OJ 洛谷 大小各不相同的一队青蛙站在河左岸的石墩(记为A)上,要过到对岸的石墩(记为D)上去.河心有几 ...

  8. 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)

    原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...

  9. SQL Server2008 删除重复记录只剩一条(无Uid)

    INSERT INTO 表1   SELECT  *  FROM  视图1 CREATE TABLE  ##TMP01                                    ---创建 ...

  10. MySQL 查询优化 - 关联查询

    1. 关联查询执行流程 MySQL执行关联查询的策略很简单,他会从一个表中循环取出单条数据,然后用该条数据到下一个表中寻找匹配的行,然后回溯到上一个表,到所有的数据匹配完成为止.因此也被称为" ...