【Spark基础编程】 第8章 Spark MLlib

news2025/2/1 17:01:43

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 【 第8章 Spark MLlib 】
    • 8.1 Spark MLlib简介
      • 8.1.1 什么是机器学习
      • 8.1.2 基于大数据的机器学习
      • 8.1.3 Spark 机器学习库MLLib
    • 8.2 机器学习工作流
      • 8.2.1 机器学习流水线概念
      • 8.2.2 构建一个机器学习流水线
    • 8.3 特征抽取、转化和选择
    • 8.4 分类与回归
  • 【 第8章 总结 】


前言


【 第8章 Spark MLlib 】

8.1 Spark MLlib简介

8.1.1 什么是机器学习

  • 机器学习可以看做是一门人工智能的科学,该领域的主要研究对象是人工智能。
  • 机器学习利用数据或以往的经验,以此优化计算机程序的性能标准。
    在这里插入图片描述
  • 机器学习强调三个关键词:算法、经验、性能

8.1.2 基于大数据的机器学习

  • 机器学习算法涉及大量迭代计算
  • 基于磁盘的MapReduce不适合进行大量迭代计算
  • 基于内存的Spark比较适合进行大量迭代计算

8.1.3 Spark 机器学习库MLLib

  • Spark提供了一个基于海量数据的机器学习库,它提供了常用机器学习算法的分布式实现
  • 开发者只需要有 Spark 基础并且了解机器学习算法的原理,以及方法相关参数的含义,就可以轻松的通过调用相应的 API 来实现基于海量数据的机器学习过程
  • pyspark的即席查询也是一个关键。算法工程师可以边写代码边运行,边看结果
  • 需要注意的是,MLlib中只包含能够在集群上运行良好的并行算法,这一点很重要
  • 有些经典的机器学习算法没有包含在其中,就是因为它们不能并行执行
  • 相反地,一些较新的研究得出的算法因为适用于集群,也被包含在MLlib中,例如分布式随机森林算法、最小交替二乘算法。这样的选择使得MLlib中的每一个算法都适用于大规模数据集
  • 如果是小规模数据集上训练各机器学习模型,最好还是在各个节点上使用单节点的机器学习算法库(比如Weka)
  • MLlib是Spark的机器学习(Machine Learning)库,旨在简化机器学习的工程实践工作
  • MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的流水线(Pipeline)API,具体如下:
    • 算法工具:常用的学习算法,如分类、回归、聚类和协同过滤;
    • 特征化工具:特征提取、转化、降维和选择工具;
    • 流水线(Pipeline):用于构建、评估和调整机器学习工作流的工具;
    • 持久性:保存和加载算法、模型和管道;
    • 实用工具:线性代数、统计、数据处理等工具。
  • Spark 机器学习库从1.2 版本以后被分为两个包:
    • spark.mllib
      • 包含基于RDD的原始算法API
      • Spark MLlib 历史比较长,在1.0 以前的版本即已经包含了,提供的算法实现都是基于原始的 RDD
    • spark.ml
      • 提供了基于DataFrames 高层次的API,可以用来构建机器学习工作流(PipeLine)
      • ML Pipeline 弥补了原始 MLlib 库的不足,向用户提供了一个基于 DataFrame 的机器学习工作流式 API 套件
  • MLlib目前支持4种常见的机器学习问题: 分类、回归、聚类和协同过滤
    在这里插入图片描述

8.2 机器学习工作流

8.2.1 机器学习流水线概念

在介绍流水线之前,先来了解几个重要概念:

  • DataFrame
    • 使用Spark SQL中的DataFrame作为数据集,它可以容纳各种数据类型。
    • 较之RDD,DataFrame包含了schema 信息,更类似传统数据库中的二维表格。
    • 它被ML Pipeline用来存储源数据。例如,DataFrame中的列可以是存储的文本、特征向量、真实标签和预测的标签等
  • Transformer:
    • 翻译成转换器,是一种可以将一个DataFrame转换为另一个DataFrame的算法。
    • 比如一个模型就是一个 Transformer。
    • 它可以把一个不包含预测标签的测试数据集 DataFrame 打上标签,转化成另一个包含预测标签的 DataFrame。
    • 技术上,Transformer实现了一个方法transform(),它通过附加一个或多个列将一个DataFrame转换为另一个DataFrame
  • Estimator:
    • 翻译成估计器或评估器,它是学习算法或在训练数据上的训练方法的概念抽象。
    • 在 Pipeline 里通常是被用来操作 DataFrame 数据并生成一个 Transformer。
    • 从技术上讲,Estimator实现了一个方法fit(),它接受一个DataFrame并产生一个转换器。
    • 比如,一个随机森林算法就是一个 Estimator,它可以调用fit(),通过训练特征数据而得到一个随机森林模型。
  • Parameter:
    • Parameter 被用来设置 Transformer 或者 Estimator 的参数。
    • 现在,所有转换器和估计器可共享用于指定参数的公共API。ParamMap是一组(参数,值)对
  • PipeLine:
    • 翻译为流水线或者管道。
    • 流水线将多个工作流阶段(转换器和估计器)连接在一起,形成机器学习的工作流,并获得结果输出

8.2.2 构建一个机器学习流水线

  • 要构建一个 Pipeline流水线,首先需要定义 Pipeline 中的各个流水线阶段PipelineStage(包括转换器和评估器),比如指标提取和转换模型训练等。

  • 有了这些处理特定问题的转换器和评估器,就可以按照具体的处理逻辑有序地组织PipelineStages 并创建一个Pipeline

  • pipeline = Pipeline(stages=[stage1,stage2,stage3])

  • 然后就可以把训练数据集作为输入参数,调用 Pipeline 实例的 fit 方法来开始以流的方式来处理源训练数据。

  • 这个调用会返回一个 PipelineModel 类实例,进而被用来预测测试数据的标签

  • 流水线的各个阶段按顺序运行,输入的DataFrame在它通过每个阶段时被转换
    在这里插入图片描述

  • 值得注意的是,流水线本身也可以看做是一个估计器。

  • 在流水线的fit()方法运行之后,它产生一个PipelineModel,它是一个Transformer。

  • 这个管道模型将在测试数据的时候使用。 下图说明了这种用法。
    在这里插入图片描述

8.3 特征抽取、转化和选择

8.4 分类与回归


【 第8章 总结 】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DBA日常工作职责---读书笔记】

👈【上一篇】 💖The Begin💖点点关注,收藏不迷路💖 【下一篇】👉 🔻DBA 的工作职责是什么?每天 DBA 应该做哪些工作?稳定环境中的 DBA 该如何成长与 优化&#xff1…

Jmeter插件PerfMon Metrics Collector安装使用及报错解决

Jmeter作为一个轻量级的性能测试工具,开源、小巧、灵活的特性使其越来越受到测试人员喜爱。在实际的项目中,特别是跨地区项目,排除合作方指定要求使用Loadrunner作为性能测试工具外,Jmeter会是首选。 本篇文章,就着重…

华为云DevCloud平台部署bootdo博客论坛实战【开发者专属集市】

华为云DevCloud平台部署bootdo博客论坛实战【开发者专属集市】 一、bootdo-blog开源博客介绍二、本次实践所用工具及平台三、购买华为RDS数据库1.购买RDS数据库2.查看RDS数据库状态 四、创建项目1.登录华为云台DevCloud平台2.新建项目3.查看新建项目4.创建代码仓库 五、配置数据…

老话新谈之缓存一致性

前言 缓存一致性常见的更新策略也比较多,如先更新数据库再更新缓存,先删缓存再更新数据库等等,我在理解的时候有些混乱,所以这个文章提供了一些理解上的技巧去理解缓存一致性。 为什么会有缓存一致性的问题 缓存与数据库是两套…

网络安全从业人员2023年后真的会被AI取代吗?

随着ChatGPT的火爆,很多人开始担心网络安全从业人员会被AI取代。如果说网络安全挖洞的话,AI可能真的能取代。但是网络安全不仅仅只是挖洞,所以AI只是能缓解网络安全人员不足的情况,但是是不会取代人类的作用的。 就拿最近很火的C…

【STL】priority_queue的使用及模拟实现

目录 前言 priority_queue的使用 功能解析 基本接口 写点题目 模拟实现 结构解析 插入删除 调整函数结合仿函数 仿函数介绍 结合使用 其他功能 接口补齐 迭代器区间构造 前言 🍾打开 queue 头文件后,我们发现除了我们之前介绍过的普通队列…

用maven安装JUnit 5并运行单元测试

一&#xff1a;首先讲如何安装 JUnit 5 JUnit Platform JUnit Jupiter JUnit Vintage 如果不需要执行基于JUnit 3 和JUnit 4 的用例&#xff0c;那么JUnit Vintage就不需要安装。 1&#xff09;在pom文件dependencies的小节内增加如下依赖&#xff1a; <dependency>&l…

Docker安装ClickHouse22.6.9.11并与SpringBoot、MyBatisPlus集成

背景 上一篇文章CentOS6.10上离线安装ClickHouse19.9.5.36并修改默认数据存储目录记录了在旧版的操作系统上直接安装低版本 ClickHouse &#xff08;脱胎于俄罗斯头号搜索引擎的技术&#xff09;的过程&#xff0c;开启远程访问并配置密码&#xff1b; 其实通过 Docker 运行 …

一文读懂性能测试

01、常见概念 吞吐量&#xff08;TPS, QPS&#xff09; 简单来说就是每秒钟完成的事务数或者查询数。通常吞吐量大表明系统单位时间能处理的请求数越多&#xff0c;所以通常希望TPS越高越好 响应时间 即从请求发出去到收到系统返回的时间。响应时间一般不取平均值&#xff0…

二叉树及其链式结构

目录 一&#xff1a;树概念及结构 1.树的概念 2.树的相关概念 3.树的表示 二&#xff1a;二叉树的概念及结构 1.概念 2.特殊的二叉树 <1>. 满二叉树&#xff1a; <2>. 完全二叉树&#xff1a; 3.二叉树的性质 4.二叉树的存储结构 <1>.顺序结构 <…

win11 无法登录微软账户 终极解决方案

背景&#xff1a;win11突然无法登录微软账户&#xff0c;office无法激活&#xff0c;Edge里的微软账户也无法登录&#xff0c;反馈中心也无法打开等&#xff0c;有网络&#xff0c;浏览器可以访问微软并进行登录。 试过网上的网络配置&#xff08;SSL及TLS协议勾选&#xff09…

数学模型:Python实现线性规划

文章摘要&#xff1a;线性规划的Python实现。 参考书籍&#xff1a;数学建模算法与应用(第3版)司守奎 孙玺菁。 PS&#xff1a;只涉及了具体实现并不涉及底层理论。学习底层理论以及底层理论实现&#xff1a;可以参考1.最优化模型与算法——基于Python实现 渐令 粱锡军2.算法导…

vim复制,剪切觉得麻烦?今天就来教会你:vim复制和剪切教程

上次讲了vim移动光标的快捷键&#xff0c;今天我们来了解一下vim的复制多行的功能。 快速复制多行 第一步&#xff1a;将光标移动到复制的文本开始的地方&#xff0c;按下v进入可视模式&#xff0c;这里的v的意思就是visual的缩写&#xff0c;就是可视的意思。 第二步&#x…

DBSCAN 集群

目录 DBSCAN 集群 主要代码 DBSCAN 绘制结果中的集群 DBSCAN 集群 基于密度的空间聚类应用&#xff08;DBSCAN&#xff09;是一种基于密度的聚类算法&#xff0c;由Martin Ester等人在1996年提出。该算法在半径为ε的圆内找到数据点的相邻点&#xff0c;并将它们加入到同一…

Git原理详解+指令操作,带你快速掌握Git

一、相关概念 版本控制 什么是版本控制&#xff1f; 用于管理多人协同开发项目的技术对文件的版本控制&#xff0c;要对文件进行修改、提交等操作 版本控制的分类 1.本地版本控制 就是放在本地 2.集中版本控制 SVN 所有的版本数据都保存在服务器上&#xff0c;协同开发…

GDAL读取属性表值乱码解决方法

文章目录 方法1&#xff1a;方法2&#xff1a;1.通过在线网网站&#xff0c;查看编码2.参考C中gbk和utf8互相转换文章 gdal示例代码 方法1&#xff1a; 在网上查看的推荐方法&#xff08;C代码&#xff09;&#xff0c;但没解决我遇到的问题&#xff1b; CPLSetConfigOption(&…

SSM整合快速入门案例

文章目录 前言一、设计数据库表二、创建工程三、SSM技术整合四、功能模块开发五、接口测试总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮到一些萌新进行新技术的学习那也是极好的。作者…

Java网络开发(Tomcat)——登陆和注册功能 的 迭代升级 从Jsp到JavaScript + axios + vue 诸多bug 同步到异步

目录 引出前置工作vueaxiosresp0.vue版本的jsp模板1.导包--Json&#xff1a;pom.xml文件&#xff1a;2.新建一个专门用来处理响应的实体类ResData3.在axios中&#xff0c;所有响应必须是 resp.getWriter().write() 的方式&#xff0c;核心代码如下4.在jsp前端代码中导包&#x…

华为OD机试真题B卷 JavaScript 实现【查字典】,附详细解题思路

一、题目描述 输入一个单词前缀和一个字典&#xff0c;输出包含该前缀的单词。 二、输入描述 单词前缀字典长度字典。 字典是一个有序单词数组。 输入输出都是小写。 三、输出描述 所有包含该前缀的单词&#xff0c;多个单词换行输出。 若没有则返回-1。 四、解题思路…

SLAM十四讲——ch3实践

ch3的实践及避坑 一、ch3的总体步骤二、文件的执行1. 实践&#xff1a;Eigen2. 实践&#xff1a;Eigen几何模块3. 可视化演示 出现的问题 一、ch3的总体步骤 确保已经安装Eigen库&#xff0c;Eigen库是一个C开源线性代数库。 sudo apt-get install libeigen3-dev说明&#xf…