本文紧接上文的决策树分类器模型,实践的同样是分类算法模型,随机森林模型可以简单理解为集成的决策树模型,实质上随机森林模型的设计思想也的确如此,它采用了一种投票的思想来完成了模型最终的决策,将多个弱分类器模型进行集成,来达到提升基分类器模型性能的效果。

同样,下面贴一下自己学习pyspark以来的记录笔记,具体如下:

pyspark顾名思义就是由python和spark组合使用的。Spark提供了一个Python_Shell,即pyspark,从而可以以交互的方式使用Python编写Spark程序。有关Spark的基本架构以及pyspark环境配置相关的内容本篇博客就不再多加阐述了,网络上也有很多不错的讲解。

pyspark里最核心的模块是SparkContext(简称sc),最重要的数据载体是RDD。RDD就像一个NumPy array或者一个Pandas Series,可以视作一个有序的item集合。只不过这些item并不存在driver端的内存里,而是被分割成很多个partitions,每个partition的数据存在集群的executor的内存中。parkSession是Spark 2.0引入的新概念。SparkSession为用户提供了统一的切入点,来让用户学习spark的各项功能。 在spark的早期版本中,SparkContext是spark的主要切入点,由于RDD是主要的API,我们通过sparkcontext来创建和操作RDD。对于每个其他的API,我们需要使用不同的context。例如,对于Streming,我们需要使用StreamingContext;对于sql,使用sqlContext;对于hive,使用hiveContext。但是随着DataSet和DataFrame的API逐渐成为标准的API,就需要为他们建立接入点。所以在spark2.0中,引入SparkSession作为DataSet和DataFrame API的切入点。SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了SparkContext,所以计算实际上是由SparkContext完成的。
        任何Spark应用程序都会分离主节点上的单个驱动进程(包含若干个作业 ),然后将执行进程(包含若干个任务)分配给多个工作节点。驱动进程会确定任务进程的数量和组成,然后任务进程根据DAG(有向无环图)调度器的依赖关系将任务分配给执行节点。RDD(弹性分布式数据集,Resilient Distributed Datasets)是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD。RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,其本质是不可变Java虚拟机(JVM)对象的分布式集合。在PySpark中,Python数据就是存储在这些JVM对象中的。

接下来回归正题,基于pyspark的随机森林分类器模型实现如下:

#!usr/bin/env python
#encoding:utf-8
from __future__ import division'''
__Author__:沂水寒城
功能: pyspark 机器学习实践之【随机森林分类器模型】
'''import findspark
findspark.init()
import pyspark
from pyspark import SparkConf
from pyspark.ml import Pipeline
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
from pyspark.ml.classification import RandomForestClassifier
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
from pyspark.ml.feature import StringIndexer, VectorIndexer,IndexToStringconf=SparkConf().setAppName('MLDemo')
sc = SparkContext('local')
spark = SparkSession(sc)def randomForestClassifier(data="mllib/sample_libsvm_data.txt"):'''随机森林分类器'''#加载LIBSVM格式的数据集data = spark.read.format("libsvm").load(data)  labelIndexer = StringIndexer(inputCol="label", outputCol="indexedLabel").fit(data)#自动识别类别特征并构建索引,指定maxCategories,因此具有> 4个不同值的特征被视为连续的featureIndexer=VectorIndexer(inputCol="features", outputCol="indexedFeatures", maxCategories=4).fit(data)#训练集、测试集划分(trainingData, testData) = data.randomSplit([0.7, 0.3])rf = RandomForestClassifier(labelCol="indexedLabel", featuresCol="indexedFeatures", numTrees=10)#将标签索引转换为原始的标签labelConverter = IndexToString(inputCol="prediction", outputCol="predictedLabel",labels=labelIndexer.labels)pipeline = Pipeline(stages=[labelIndexer, featureIndexer, rf, labelConverter])model = pipeline.fit(trainingData)predictions = model.transform(testData)#展示前5行数据predictions.select("predictedLabel", "label", "features").show(5)#展示预测标签与真实标签,计算测试误差evaluator = MulticlassClassificationEvaluator(labelCol="indexedLabel", predictionCol="prediction", metricName="accuracy")accuracy = evaluator.evaluate(predictions)print("Test Error = %g" % (1.0 - accuracy))rfModel = model.stages[2]print('rfModelSummary: ',rfModel)  #模型摘要if __name__=='__main__':randomForestClassifier(data="mllib/sample_libsvm_data.txt")

结果输出如下:

从测试结果错误率来看效果是非常好的了,上述的代码使用的是pyspark自带的数据集,感兴趣的可以替换成自己的数据集来评估实验。

pyspark分类算法之随机森林分类器模型实践【randomForestClassifier】相关推荐

  1. 机器学习5—分类算法之随机森林(Random Forest)

    随机森林(Random Forest) 前言 一.随机森林 1.什么是随机森林 2.随机森林的特点 3.随机森林的生成 二.随机森林的函数模型 三.随机森林算法实现 1.数据的读取 2.数据的清洗和填 ...

  2. R语言分类算法之随机森林(Random Forest)

    1.原理分析: 随机森林是通过自助法(boot-strap)重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练集样本集合,然后根据自助样本集生成k个决策树组成的随机森林,新数据的 ...

  3. 机器学习分类算法之随机森林(集成学习算法)

    目录 什么是集成学习? 随机森林 随机森林的生成算法 随机森林的随机性

  4. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  5. Python实现GWO智能灰狼优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjal ...

  6. 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测

    随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测 1.引言 2.理论基础 2.1 什么是决策树 2.2 特征选择的算法 2.2.1 ID3:基于 ...

  7. 为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

    目录 前言 一.实验目的 二.实验环境 三.实验内容与结果 1.SVM(support vector Machine)是什么? 2.SVM能干什么? 3.SVM如何实现? 4.独热编码:独热编码(On ...

  8. R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

    R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型 目录 R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

  9. ML之PDP:基于titanic泰坦尼克是否获救二分类预测数据集利用PDP部分依赖图对RF随机森林实现模型可解释性案例

    ML之PDP:基于titanic泰坦尼克是否获救二分类预测数据集利用PDP部分依赖图对RF随机森林实现模型可解释性案例 目录 基于titanic泰坦尼克是否获救二分类预测数据集利用PDP部分依赖图对R ...

  10. Python实现贝叶斯优化器(Bayes_opt)优化随机森林回归模型(RandomForestRegressor算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 贝叶斯优化器 (BayesianOptimization) 是一 ...

最新文章

  1. java-jwt这个库没用过吧?
  2. 计算机毕业论文多久,计算机毕业论文
  3. x86汇编从实模式到保护模式-程序加载器
  4. 服务器系统授权,授权方案说明
  5. C++学习之路:适合C++新手的练手项目,高薪之路必备项目!
  6. jQuery常用技巧大放送
  7. 学习 MySQL中导入 导出CSV
  8. 在PyQt中构建 Python 菜单栏、菜单和工具栏
  9. TIOBE 11月编程语言排行榜: Haskell 要进前20了?
  10. hdu 2844 Coins (多重背包+二进制优化)
  11. python字符串输入拼接_20200930 024.字符串_转义字符_字符串拼接_字符串复制_input()获得键盘输入...
  12. 插入导频法实现载波通信matlab,插入导频法.ppt
  13. 帝国cms模板html文件夹,帝国cms的模板保存在哪里
  14. 战舰 Linux服务端,战舰帝国一键端手游服务端+GM工具+视频教程
  15. 未来的计算机绘画图片,电脑绘画——为想象力插上科技的翅膀 二十中附校科技社团电脑绘画作品展...
  16. 跨站脚本攻击实例解析
  17. RL论文阅读20 - MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)
  18. matlab黑白棋盘格,请不要一再错过!黑白棋盘格魔法瓷砖(组图)
  19. LM321 低功耗单运算放大器 1MHZ增益带宽积 用于充电器 适配器
  20. Python tailer模块的使用

热门文章

  1. 阿里云在西雅图招人挖角 微软居多
  2. mvc actionresult返回各种文件
  3. 大数据解读剩女现象:谁遗忘了她们的爱情?
  4. 安装mysql报curses的解决
  5. 无法注册这篇文档........
  6. 为什么要进行网络的分层?
  7. Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
  8. MVC传参数给js的时候 如果是数值 变量要进行一下转换才能正确识别 例如var aaa = parseInt('@Model.ClickIndex');...
  9. Java面向对象-String类
  10. C#string与char互转