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连接mysql数据库的正确姿势
Feb 03 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
python中tkinter的应用:修改字体的实例讲解
Jul 17 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
Django--权限Permissions的例子
Aug 28 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
python 安装impala包步骤
Mar 28 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
python 获取字典键值对的实现
Nov 12 Python
python 日志模块logging的使用场景及示例
Jan 04 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编程语言开发动态WAP页面
2006/10/09 PHP
PHP Token(令牌)设计
2008/03/15 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
2017/05/12 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
python logging类库使用例子
2014/11/22 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
python 美化输出信息的实例
2018/10/15 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
linux面试题参考答案(4)
2014/09/21 面试题
物业经理求职自我评价
2013/09/22 职场文书
事假请假条范文
2014/04/11 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
党纪处分决定书
2015/06/24 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
Selenium浏览器自动化如何上传文件
2022/04/06 Python
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python