此前用自己实现的随机森林算法,应用在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))
import pandas as pd
import numpy as np
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.tree import RandomForest #将类别数量大于2的类别型变量进行重新编码,并把数据集变成labeledPoint格式
#df=pd.read_csv('/home/kim/t.txt',index_col=0)
#for col in ['Pclass','embrk']:
# values=df[col].drop_duplicates()
# for v in values:
# col_name=col+str(v)
# df[col_name]=(df[col]==v)
# df[col_name]=df[col_name].apply(lambda x:int(x))
#df=df.drop(['Pclass','embrk'],axis=1)
#df.to_csv('train_data') #读入数据集变成弹性分布式数据集RDD ,由于是有监督学习,需要转换为模型输入的格式LabeledPoint
rdd=pyspark.SparkContext.textFile('/home/kim/train')
train=rdd.map(lambda x:x.split(',')[1])
train=train.map(lambda line:LabeledPoint(line[1],line[2:])) #模型训练
model=RandomForest.trainClassifier\
(train, numClasses=2, categoricalFeaturesInfo={},numTrees=1000,\
featureSubsetStrategy="auto",impurity='gini', maxDepth=4, maxBins=32) #包含LabeledPoint对象的RDD,应用features方法返回其输入变量的值,label方法返回其真实类别
data_p=train.map(lambda lp:lp.features)
v=train.map(lambda lp:lp.label)
prediction=model.predict(data_p)
vp=v.zip(prediction) #最后输出模型在训练集上的正确率
MSE=vp.map(lambda x:abs(x[0]-x[1]).sum())/vp.count()
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. Jenkins+maven+gitlab自动化部署之Jenkins系统管理配置(四)

    一.Jenkins全局工具配置 在jenkins首页依次进入系统管理>>全局工具配置: 1) jdk.git.maven配置 指定其在服务器中的目录位置 二.插件管理 1)依次点开系统管理 ...

  2. 修改主机名和修改主机映射和ssh免登陆

    1.修改主机名 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=cc3 2.修改主机映射 vi /etc/hosts 127.0.0.1 loca ...

  3. 【HC89S003F4开发板】9ASM写定时器1

    HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...

  4. dotnet Core 图片验证码

    9102年了,.NET Core 2.x已经稳定,但是还是有很多人搞不定.NET Core的图片验证码. 下面说重点 1.引用Nuget包:System.Drawing.Common 2.像NET F ...

  5. Android--DES加密

    Base64.java import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputS ...

  6. Kubernetes 常见错误

    OOMKilled: Pod 的内存使用超出了 resources.limits 中的限制,被强制杀死. CrashLoopBackoff: Pod 进入 崩溃-重启循环,重启间隔时间从 10 20 ...

  7. flutter从入门到精通三

    flutter可以通过一套代码运行在多个平台上,包括移动,web,桌面,嵌入式,但是在 Web 平台的支持尚未达到 Beta 阶段,请不要用在生产环节,在阅读文档时候,推荐大家阅读https://fl ...

  8. Docker 镜像 && 容器的基本操作

    镜像 && 容器 docker 镜像好比操作系统的镜像(iso) docker 容器好比是已安装运行的操作系统 所以说 docker 镜像文件运行起来之后,就是我们所说的 docker ...

  9. Go part 8 并发编程,goroutine, channel

    并发 并发是指的多任务,并发编程含义比较广泛,包含多线程.多进程及分布式程序,这里记录的并发是属于多线程编程 Go 从语言层面上支持了并发的特性,通过 goroutine 来完成,goroutine ...

  10. BPM业务流程管理系统_K2受邀出席QAD客户日活动,赋能企业云端智造_工作流引擎

    10月17日,K2受邀参加由厦门易维主办的以“走进QAD云ERP,深耕智能制造”为主题的QAD客户日活动.本次大会是以工业4.0背景下传统制造业面临巨大压力和挑战为导向,旨在探讨如何助力企业迅速适应业 ...