pyspark 随机森林的实现


Posted in Python onApril 24, 2020

随机森林是由许多决策树构成,是一种有监督机器学习方法,可以用于分类和回归,通过合并汇总来自个体决策树的结果来进行预测,采用多数选票作为分类结果,采用预测结果平均值作为回归结果。

“森林”的概念很好理解,“随机”是针对森林中的每一颗决策树,有两种含义:第一种随机是数据采样随机,构建决策树的训练数据集通过有放回的随机采样,并且只会选择一定百分比的样本,这样可以在数据集合存在噪声点、异常点的情况下,有些决策树的构造过程中不会选择到这些噪声点、异常点从而达到一定的泛化作用在一定程度上抑制过拟合;第二种随机是特征随机,训练集会包含一系列特征,随机选择一部分特征进行决策树的构建。通过这些差异点来训练的每一颗决策树都会学习输入与输出的关系,随机森林的强大之处也就在于此。

废话不多说,直接上代码:

from pyspark import SparkConf
from pyspark.sql import SparkSession
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import StringIndexer
from pyspark.ml.classification import RandomForestClassifier
from pyspark.sql import Row
import pandas as pd
from sklearn import metrics
 
if __name__ == "__main__":
  appname = "RandomForestClassifier"
  master ="local[4]" 
  conf = SparkConf().setAppName(appname).setMaster(master) #spark配置        
  spark=SparkSession.builder.config(conf=conf).getOrCreate()#spark实例化
  
#读取数据
  data=spark.read.csv('良恶性乳腺癌数据.csv',header=True)
  
#构造训练数据集
  dataSet = data.na.fill('0').rdd.map(list)#用0填充空值  
  trainData, testData= dataSet.randomSplit([0.7, 0.3], seed=7)
  trainingSet = trainData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF()  
  train_num = trainingSet.count()
  print("训练样本数:{}".format(train_num))
 
   
#使用随机森林进行训练
  stringIndexer = StringIndexer(inputCol="label", outputCol="indexed")
  si_model = stringIndexer.fit(trainingSet)
  train_tf = si_model.transform(trainingSet)
  train_tf.show(5)  
  rf = RandomForestClassifier(numTrees=100, labelCol="indexed", seed=7)
  rfModel = rf.fit(train_tf)
   
#输出模型特征重要性、子树权重
  print("模型特征重要性:{}".format(rfModel.featureImportances))
  print("模型特征数:{}".format(rfModel.numFeatures))
  
#预测测试集
  testSet = testData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF()
  test_num=testSet.count()
  print("测试样本数:{}".format(test_num))  
  si_model = stringIndexer.fit(testSet)
  test_tf = si_model.transform(testSet)  
  predictResult = rfModel.transform(test_tf)
  predictResult.show(5)
  spark.stop()
 
#将预测结果转为python中的dataframe
  columns=predictResult.columns#提取强表字段
  predictResult=predictResult.take(test_num)#
  predictResult=pd.DataFrame(predictResult,columns=columns)#转为python中的dataframe
 
#性能评估
  y=list(predictResult['indexed'])
  y_pred=list(predictResult['prediction'])
  y_predprob=[x[1] for x in list(predictResult['probability'])]
  precision_score=metrics.precision_score(y, y_pred)#精确率
  recall_score=metrics.recall_score(y, y_pred)#召回率
  accuracy_score=metrics.accuracy_score(y, y_pred)#准确率
  f1_score=metrics.f1_score(y, y_pred)#F1分数
  auc_score=metrics.roc_auc_score(y, y_predprob)#auc分数
  print("精确率:",precision_score )#精确率
  print("召回率:",recall_score )#召回率
  print("准确率:",accuracy_score )#准确率
  print("F1分数:", f1_score)#F1分数
  print("auc分数:",auc_score )#auc分数

运行结果:

pyspark 随机森林的实现

到此这篇关于pyspark 随机森林的实现的文章就介绍到这了,更多相关pyspark 随机森林内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简单使用Python自动生成文章
Dec 25 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
Python OS模块常用函数说明
May 23 Python
python编辑用户登入界面的实现代码
Jul 16 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
Oct 17 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
安装docker-compose的两种最简方法
Jul 30 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
python 实现图片裁剪小工具
Feb 02 Python
Python数据分析入门之教你怎么搭建环境
May 13 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 #Python
pyspark给dataframe增加新的一列的实现示例
Apr 24 #Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 #Python
python实现飞船大战
Apr 24 #Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 #Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 #Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 #Python
You might like
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
Python中的index()方法使用教程
2015/05/18 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
python实现高斯投影正反算方式
2020/01/17 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
护理专业学生职业生涯规划范文
2014/03/11 职场文书
安全标语口号
2014/06/09 职场文书
新郎新娘致辞
2015/07/31 职场文书
上班旷工检讨书
2015/08/15 职场文书
深入理解pytorch库的dockerfile
2022/06/10 Python