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中类变量与成员变量的使用注意点总结
Apr 29 Python
Python实现将doc转化pdf格式文档的方法
Jan 19 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 Python
15个Pythonic的代码示例(值得收藏)
Oct 29 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
Python实现Excel自动分组合并单元格
Feb 22 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 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
17个Python小技巧分享
2015/01/23 Python
详解Python中dict与set的使用
2015/08/10 Python
python机器学习之神经网络(二)
2017/12/20 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
python调用摄像头拍摄数据集
2019/06/01 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python线程里哪种模块比较适合
2020/08/02 Python
Python容器类型公共方法总结
2020/08/19 Python
Python基于template实现字符串替换
2020/11/27 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
最新离婚协议书范本
2014/08/19 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
初三英语教学计划
2015/01/23 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android