PySpark——随机森林分类案例

一、随机森林

  1. 随机森林案例

    """
    Random Forest Classifier Example.
    """
    import os
    import timeimport findspark
    import pandas as pd
    import pyspark.pandas as pyd
    from pyspark.ml import Pipeline
    from pyspark.ml.classification import RandomForestClassifier
    from pyspark.ml.feature import IndexToString, StringIndexer, VectorIndexer
    from pyspark.ml.evaluation import MulticlassClassificationEvaluator
    from pyspark.ml.linalg import Vectors
    from pyspark.sql import SparkSession
    from sklearn.datasets import load_breast_cancerif __name__ == "__main__":findspark.init()os.environ["PYARROW_IGNORE_TIMEZONE"] = '1'spark = SparkSession \.builder \.appName("随机森林针对乳腺癌数据分析") \.master("local[*]") \.getOrCreate()# 加载数据cancer = load_breast_cancer()data = pd.DataFrame(data=cancer.data, columns=cancer.feature_names)data["label"] = cancer.targetdata = pyd.from_pandas(data)data = data.to_spark(index_col='index')# 合并特征data = data.rdd.map(lambda x: (Vectors.dense(x[1:-1]), x[-1])).toDF(["features", "label"])data.show()# 索引标签,将元数据添加到标签列。# 适合整个数据集以包含索引中的所有标签。labelIndexer = StringIndexer(inputCol="label", outputCol="indexedLabel").fit(data)# 自动识别分类特征,并对其进行索引。# 设置 maxCategories,使具有 > 4 个不同值的特征被视为连续的。featureIndexer = VectorIndexer(inputCol="features", outputCol="indexedFeatures").fit(data)# 将数据分成训练集和测试集(30% 用于测试)(trainingData, testData) = data.randomSplit([0.7, 0.3])# 训练一个随机森林模型。rf = RandomForestClassifier(labelCol="indexedLabel", featuresCol="indexedFeatures", seed=60, maxDepth=16,numTrees=60)# 将索引标签转换回原始标签。labelConverter = IndexToString(inputCol="prediction", outputCol="predictedLabel",labels=labelIndexer.labels)# 在管道中链接索引和随机森林pipeline = Pipeline(stages=[labelIndexer, featureIndexer, rf, labelConverter])# 训练模型。 运行索引器。model = pipeline.fit(trainingData)# 做预测predictions = model.transform(testData)# 选择要显示的示例行predictions.select("predictedLabel", "label", "features").show(5)# 选择(预测,真实标签)并计算测试误差evaluator = MulticlassClassificationEvaluator(labelCol="indexedLabel", predictionCol="prediction",metricName="accuracy")accuracy = evaluator.evaluate(predictions)print("Test Right = {}".format(accuracy * 100))rfModel = model.stages[2]print(rfModel)  # summary onlytime.sleep(3000)spark.stop()
    
  2. 随机森林项目

    1. main

      """main
      """
      import os
      from time import timeimport pandas as pd
      import findspark
      from pyspark.ml.feature import VectorAssembler
      from pyspark.ml.linalg import Vectors
      from pyspark.sql import SparkSession
      import pyspark.pandas as pyd
      import DownloadData
      from SeaBornPlot import Seaborn_Plot
      from ConcatData import concat_data
      from DataPreprocess import time_preprocess
      import ExtractTrainData, ExtractTestData, PlotPredict, ExtractFullTrainData
      import TrainingAndPredictif __name__ == '__main__':findspark.init()spark = SparkSession \.builder \.appName("基于pyspark的PDM项目") \.master("local[*]") \.getOrCreate()os.environ["PYARROW_IGNORE_TIMEZONE"] = '1'# # 1. 下载数据# # DownloadData.download_data()# # exit(0)## # 2. 合并训练数据# train_act_val, train_alarm, test_act_val, test_alarm = concat_data()## # 3.预处理,按照时间排序# train_act_val, train_alarm, test_act_val, test_alarm = time_preprocess(#     train_act_val, train_alarm, test_act_val, test_alarm)## # 4. 绘图查看特征# # seaborn = Seaborn_Plot()# # seaborn.plot_seaborn(train_act_val, train_alarm)## # 5. 提取训练数据# """先分flag,后提取特征,速度慢,但可针对每个flag进行更细致的操作"""# train_data = ExtractTrainData.extract_train_data(train_act_val, train_alarm)## """先提取特征,后flag,速度快,但数据处理相对粗糙,如少于window滑窗的单个flag较多,会损失较大信息"""# # train_data = ExtractFullTrainData.extract_train_data(train_act_val, train_alarm)## # 6. 提取测试集# test_data = ExtractTestData.extract_test_all_data(test_act_val)# TODO:从HDFS文件系统读取CSV数据# TODO 大数据train_data = pyd.read_csv("/export/data_pdm/train_data.csv")test_data = pyd.read_csv("/export/data_pdm/test_data.csv")test_data_yuan = pd.read_csv("/export/data_pdm/test_data_small.csv")test_alarm = pd.read_csv("/export/data_pdm/test_alarm.csv")# TODO 小数据# train_data = pyd.read_csv("/export/data_pdm/train_data_small.csv")# test_data = pyd.read_csv("/export/data_pdm/test_data_small.csv")# test_data_yuan = pd.read_csv("/export/data_pdm/test_data_small.csv")# test_alarm = pd.read_csv("/export/data_pdm/test_alarm.csv")# TODO 数据处理train_data = train_data.drop(["_c0"], axis=1)test_data = test_data.drop(["_c0"], axis=1)test_alarm = test_alarm.drop(["Unnamed: 0"], axis=1)# TODO:数据并行处理# 处理训练集数据train_data = train_data.iloc[:, 2:]train_data = train_data.to_spark(index_col='index')train_data = train_data.rdd.map(lambda x: (Vectors.dense(x[1:-1]), x[-1])).toDF(["features", "label"])# 处理测试集数据test_data = test_data.iloc[:, 2:]test_data = test_data.to_spark(index_col='index')test_data = test_data.rdd.map(lambda x: (Vectors.dense(x[1:]), x[0])).toDF(["features", "index"])# 7. 训练并预测数据集ts = time()data_predict = TrainingAndPredict.training_and_predict(train_data, test_data)te = time()print("spark总耗时:", te - ts)exit(0)# 8. 实时绘图显示# TODO:预测表与真实值的结合test_data_yuan["errno"] = 0test_data_yuan['label'] = data_predicttest_data_yuan['alarmtime'] = test_data_yuan['acttime']  # 将act_time时间转为alarmtime,好进行对比data_predict = test_data_yuan[["flag", "alarmtime", "errno", "label"]].copy()data_predict.alarmtime = data_predict.alarmtime.astype('datetime64[ns]')test_alarm.alarmtime = test_alarm.alarmtime.astype('datetime64[ns]')# 实时绘图显示PlotPredict.plot_predict(data_predict, test_alarm)
      
    2. traning.py

      from time import time
      from pyspark.ml.classification import RandomForestClassifier
      from Parameters import Parameters# 超参数 测试集必须取与训练集相同的特征参数
      select_features = Parameters.train_features.get('select_features')
      random = Parameters.test_features.get('random')
      n_estimators = Parameters.test_features.get('n_estimators')def training_and_predict(data, test_data):# 训练一个随机森林模型。rfc = RandomForestClassifier(labelCol="label", featuresCol="features", seed=random)# 训练模型。 运行索引器。ts = time()rfc = rfc.fit(data)te = time()print("spark训练时间:", te - ts)# 预测概率ts = time()predictions = rfc.transform(test_data)te = time()print("spark预测时间", te - ts)# 返回概率probability = predictions.select("probability")probability = probability.toPandas()probability = probability.probability.apply(lambda x: x[1])return probability
      

PySpark——随机森林分类案例相关推荐

  1. spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  2. GEE实现图像随机森林分类

    对图像进行土地利用分类,因此下面是监督分类的流程以及代码案例. 1.首先分类最开始应该建立样本数据集,在这里我分了四类,然后就开始自己的采样,设立好分类后,对目标进行分类. 然后对每个样本进行颜色选择 ...

  3. 随机森林的java算法_spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  4. 随机森林分类算法python代码_Python机器学习笔记:随机森林算法

    随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为&q ...

  5. PIE-engine 教程 ——随机森林监督分类案例(河北安国市为例)

    本次举一个简答的案例,通过对一个县级市进行监督分类采样,然后进行耕地.林地.园地和其它的划分,除此之外,我们还需要掌握随机样本点的采集,混淆矩阵以及精度计算等问题.首先我们看一下随机样本点的选取函数: ...

  6. 随机森林图像分类实战:随机森林分类聚类(Kmeans)降维后的数据、随机森林分类聚类(Kmeans)降维后的合成(append)数据

    随机森林图像分类实战:随机森林分类聚类(Kmeans)降维后的数据.随机森林分类聚类(Kmeans)降维后的合成(append)数据 目录

  7. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  8. Python 随机森林分类

    Python 随机森林分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 决策树分类简介 相关概念见下: 决策树的最大问题是 ...

  9. python 随机森林分类 DecisionTreeClassifier 随机搜索优化参数 GridSearchCV

    @python 随机森林分类模型 随机优化参数 学习笔记 随机森林 1.随机森林模型 随机森林算法是基于决策树算法的Begging优化版本,通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策 ...

最新文章

  1. python可视化脉搏和血氧数据并通过阈值动态调整、动态可视化异常值
  2. 用SC命令 添加或删除windows服务提示OpenSCManager 失败5
  3. KUDU--秒级查询的数据仓库
  4. 服务器启动时的leader选举
  5. 乱序图片 极验_极验验证吴渊:传统图片验证方式已经无效了!
  6. commonjs是什么_JavaScript模块化标准CommonJS/AMD/CMD/UMD/ES6Module的区别
  7. elementui select 赋值后,回显没有默认选中label,而是显示value值
  8. 4.navicat11激活教程,亲测可用哦!
  9. Runtime使用单例模式,饿汉式
  10. 在websphere部署完war包后出现com.ibm.ws.jsp.JspCoreException: JSPG0218E异常
  11. Differential Geometry之第八章常Gauss曲率曲面
  12. 如何从JavaScript对象中删除键? [重复]
  13. 2021华为软挑-成渝复赛复盘
  14. 经验模态分解python_EMD经验模态分解
  15. python画海贼王_用python自动爬取海贼王漫画推送kindle
  16. C++大法:举世闻名之BOOST大法精华浅析(三)内存管理库(小白piao分享)
  17. 测试案例(五个案例)
  18. 最小生成树(库鲁斯卡尔算法)
  19. 怎么去掉ECShop购物流程中收货人电子邮箱必填
  20. Dialogue System for Unity文档中英对照版(简雨原创翻译)第四篇(关于主流ui插件拓展相关)

热门文章

  1. 互联网日报 | QQ正式上线QID功能;高通骁龙888处理器正式发布;嫦娥五号成功落月...
  2. 个人博客站点添加谷歌联盟Google Adsense
  3. 从零到壹搭建一个商城架构--k8s集群安装
  4. Office2007 Professional简体中文版 附注册码
  5. 三天快速制作易语言防破解网络验证注册码系统
  6. Dragon slayer
  7. 学习在kvm上创建vtpm
  8. Fineplus v1.4 显IP For QQ2007
  9. 《信息与编码》考试复习笔记6----第六章连续信源熵和信道容量(考点在连续信道容量)
  10. ICRA 2021| SLAM方向论文汇总