使用PySpark搭建机器学习模型

文章目录

  • 使用PySpark搭建机器学习模型
    • 前言
    • 搭建回归模型
      • 1.加载数据集
      • 2.拆分数据集
      • 3.创建模型
      • 4&5 模型训练与预测
      • 6.模型评估
    • 绘制折线图
    • 参考文章

前言

因为现阶段的实验需要用到 PySpark ,所以安装了 PySpark 来搭建机器学习模型来进行训练。

还没有配置好 PySpark 环境的,请参考这篇博客进行配置 Windows下搭建PySpark环境

实验环境:

  • PyCharm 2019
  • Python 3.6
  • Spark 2.3.4

这是我用的是阿里天池的工业蒸汽量数据集,做的是一个回归预测,数据集和最终的代码我都放在了链接里。

链接:https://pan.baidu.com/s/1os9gK3T8wpDdF0sI_c31Kg
提取码:q73f

PySpark 的机器学习的知识这里我就不介绍了,想了解的自行查看参考文章第一个。

搭建回归模型

搭建一个简单的机器学习模型一共是六个步骤:

  1. 加载数据集
  2. 拆分数据集
  3. 创建模型
  4. 训练模型
  5. 模型预测
  6. 模型评估

我们按照这六个步骤一步一步搭建起机器学习模型

1.加载数据集

Apache Spark 2.x 引入了 SparkSession,其为用户提供了一个统一的切入点来使用 Spark 的各项功能,并且允许用户通过它调用 DataFrame 和 Dataset 相关 API 来编写 Spark 程序。

from pyspark.sql import SparkSession
# 创建 Spark 实例
spark = SparkSession.builder.appName('RandomForestRegressor').master('local').getOrCreate()# 1. 数据导入
data = spark.read.csv('zhengqi_train.csv', header=True, inferSchema=True, encoding='utf-8')

因为我搭建的是单机版的Spark,所以 master 随便指定就行,appName一般写的是模型的名字。

zhengqi_train.csv 放在代码的同级目录下,通过相对路径直接可以读取。如果你使用其他的 IDE,请记得转换路径。

2.拆分数据集

蒸汽数据集一共有38个特征属性,分别是 V0—V37,分别对应各个训练属性,有一个 target 目标属性,是预测值。

拆分数据集之前,我们将所有的训练属性合并为一个向量,然后再进行划分,这样会比较方便。

from pyspark.ml.feature import VectorAssembler# 特征处理
df_assember = VectorAssembler(inputCols=data.columns[:-1], outputCol='features')
df = df_assember.transform(data)# 划分数据集
model_df = df.select(['features', 'target'])
train_df, test_df = model_df.randomSplit([0.75, 0.25], seed=10)

这里我们将 V0—V37合并为一个 features 向量。通过特征向量和目标属性进行数据集的划分,seed是随机种子。

3.创建模型

pyspark.ml.regression.RandomForestRegressor(featuresCol=‘features’, labelCol=‘label’, predictionCol=‘prediction’, maxDepth=5, maxBins=32, minInstancesPerNode=1, minInfoGain=0.0, maxMemoryInMB=256, cacheNodeIds=False, checkpointInterval=10, impurity=‘variance’, subsamplingRate=1.0, seed=None, numTrees=20, featureSubsetStrategy=‘auto’)

from pyspark.ml.regression import RandomForestRegressor# 构建模型
rf = RandomForestRegressor(featuresCol='features', labelCol='target')

featuresCol指定的是训练属性,我们刚才把它合并成向量的优势这里就体现出来了。labelCol指定的是目标属性。predictionCol指定的是预测属性,在之后的模型评估中我们会用到,如果不指定 predictionCol,之后就使用默认值“prediction”。

这里我没有进行参数设置,都是采用的默认参数。

4&5 模型训练与预测

# 训练
rf_model = rf.fit(train_df)
# 预测
rf_prediction = rf_model.transform(test_df)

fit方法用来训练和拟合数据,transform方法是转换为 spark的 dataframe,这里是进行模型预测。

6.模型评估

from pyspark.ml.evaluation import
RegressionEvaluator# 创建评估器
evaluator = RegressionEvaluator(labelCol='target', predictionCol='prediction')
# 用 MSE 和 R2 进行评估
mse = evaluator.evaluate(rf_prediction, {evaluator.metricName: 'mse'})
r2 = evaluator.evaluate(rf_prediction, {evaluator.metricName: 'r2'})
print("MSE为:", mse)
print("R2得分:", r2)

评估器的 predictionCol 要和 模型的 predictionCol 保持一致。

这样六个步骤下来,一个简单的机器学习回归模型就构建好了。

绘制折线图

模型搭建好之后,我们可以绘制一个预测值与真实值之间的折线图来进行展示。

import matplotlib.pyplot as plt
import numpy as np# 转换数据类型并排序
true_test = sorted(test_df.select('target').collect())
perdiction_test = sorted(rf_prediction.select('target').collect())# 使用plt绘图
plt.figure()
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['savefig.dpi'] = 1080
plt.rcParams['figure.dpi'] = 1080
plt.title('RandomForestRegressor')
x_label = np.linspace(1, 2*len(true_test), len(true_test))
plt.plot(x_label, true_test)
plt.plot(x_label, perdiction_test, linestyle='--')
plt.legend(['真实值', '预测值'])
# 保存图片
plt.savefig('RandomForestRegressor.png')
plt.show()

在 spark 中处理的数据都是 sql.dataframe 类型的,无法直接使用 plt 进行绘图,我们需要使用 collect 方法进行类型转换。

参考文章

pySpark 机器学习库ml入门

使用pyspark.ml.regression模块预测波士顿房价

pyspark与机器学习

使用PySpark搭建机器学习模型相关推荐

  1. 用Python搭建机器学习模型预测房租价格

    毫无疑问,机器学习是当前大数据分析中最热门的话题.这也是一些最令人兴奋的技术领域的基本概念,例如自动驾驶汽车和预测分析.百度上的机器学习搜索在2019年4月创历史新高,自此以来兴趣一直没有下降. 但是 ...

  2. 如何做机器学习模型质量保障及模型效果评测

    桔妹导读:近年来,机器学习模型算法在越来越多的工业实践中落地.在滴滴,大量线上策略由常规算法迁移到机器学习模型算法.如何搭建机器学习模型算法的质量保障体系成为质量团队急需解决的问题之一.本文整体介绍了 ...

  3. 前几行 python_调包侠神器2.0发布,Python机器学习模型搭建只需要几行代码

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI Python开源机器学习建模库PyCaret,刚刚发布了2.0版本. 这款堪称「调包侠神器」的模型训练工具包,几行代码就能搞定模型编写.改进 ...

  4. 机器学习模型 知乎_知乎CTO李大海:谢邀,来分享下内容社区的AI架构搭建与应用...

    谢邀!知乎 CTO 来分享下内容社区的 AI 架构搭建与应用. 「在信息爆炸的互联网海洋中,有价值的信息仍然是稀缺的」.知乎的诞生源于这样一个非常简单的初心. 而在挖掘真正有价值的信息过程中,知乎很好 ...

  5. 基于知识图谱+机器学习,搭建风控模型的项目落地

    本项目主要实现逻辑如下: 1.将测试数据分表格存入mysql数据库. 2.设计知识图谱关系图,按照设计思路将node与对应的relationship存入neo4j数据库. 3.设计一套有效的特征,提取 ...

  6. Azure机器学习模型搭建

    Azure机器学习模型搭建 Azure Machine Learning(简称"AML")是微软在其公有云Azure上推出的基于Web使用的一项机器学习服务,机器学习属人工智能的一 ...

  7. 1人工智能概述------Azure机器学习模型搭建实验(完整体验-手把手教学-机器学习的过程)

    文章目录 1.7 Azure机器学习模型搭建实验 Azure平台简介 Azure 机器学习实验 一.项目背景[项目简介] 二.项目基本需求及目的 三.项目准备工作 四.项目实现步骤 2.Azure云平 ...

  8. 用Tensorflow搭建预测磁盘性能的机器学习模型

    前言:这篇文章的内容是去年上家公司参加部门code hackthon活动上运用了一些简单的Tensorflow机器学习模型,做的一个预测磁盘性能的小工具.因为和现在所做的行业和工作内容有些一定差距,就 ...

  9. MediaPipe:Google Research 开源的跨平台多媒体机器学习模型应用框架

    作者 | MediaPipe 团队 来源 | TensorFlow(ID:tensorflowers) [导读]我爱计算机视觉(aicvml)CV君推荐道:"虽然它是出自Google Res ...

最新文章

  1. 使用Python,OpenCV寻找图像中的轮廓
  2. 人人都有好工作:IT行业求职面试必读
  3. 计算机组成与结 读写数据实验,计算机组成与结构实验报告现实版.doc
  4. 高并发分布式系统中生成全局唯一(订单号)Id
  5. PHP文件上传类及其使用实例教程
  6. 北京区域赛I题,Uva7676,A Boring Problem,前缀和差分
  7. 商业项目中代码质量是否重要?
  8. 第 3-2 课:集合详解(下) + 面试题
  9. Kali Linux Web 渗透测试秘籍 第四章 漏洞发现
  10. 1、分组选择器, 2、尺寸 (Dimension)属性,3、Display(显示) 与 Visibility(可见性),4、CSS Display - 块和内联元素,5、CSS Position(定位
  11. Linux常用视频播放器
  12. 编译原理 语法分析程序LL(1)和LR(0)实现
  13. 在浏览器输入localhost:3000显示需要新应用打开此localhost原因
  14. UE4 后期材质节点学习
  15. UITT不忘初心,为交易而生
  16. java代码读取excel文件_Java 读取excel 文件流代码实例
  17. 一个数如果恰好等于它的因子之和,这个数就称为 完数 。例如6=1+2+3.编程 找出1000以内的所有完数。
  18. Era of nostalgia?(怀旧时代的到来?)
  19. CSS的两种盒子模型
  20. nmap扫描渗透测试1

热门文章

  1. 又是一个程序员粗心的代码引起频繁FullGC的案例
  2. GO select用法详解
  3. Java 多态中成员变量与成员属性的特点【复习】
  4. Android --- 从相册中选择图片或者拍着选择图片遇到的问题
  5. mfc 消息消息队列概念_必看入门秘籍——解密原理:消息中间件之RabbitMQ
  6. 成功解决but is 0 and 2 (computed from start 0 and end 9223372 over shape with rank 2 and stride-1)
  7. hacker:Python通过对简单的WIFI弱口令实现自动实时破解
  8. 成功解决h5py\_init_.py:26:FutureWarning: Conversion of the second argument of issubdtype from `float` to
  9. Web应用开发技术(2)-html
  10. Loudrunner常用函数