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

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 【 第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章 总结 】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程间的通信之共享内存

进程间的通信之共享内存 一、system V 内存共享原理二、共享内存的使用1、ftok函数2、shmget函数3、shmat函数4、shmdt函数5、shmctl函数6、代码使用 三、一些细节的补充 一、system V 内存共享原理 利用内存共享进行进程间的通信的原理其实分为以下几个步骤: 在物…

Mysql数据库初体验

Mysql数据库初体验 一、数据库的基本概念1.数据(Data)2.表3.数据库4.数据库管理系统(DBMS)5.数据库系统 二、数据库系统发展史1.第一代数据库2.第二代数据库3.第三代数据库 三、当今主流数据库介绍四、数据库分类1.关系数据库2.关系型 SQL 数…

mybatis-plus分页查询(springboot中实现单表和多表查询)

一、mybatis-plus单表查询 使用mybatis-plus实现单表分页查询 非常方便,主要操作步骤如下: 配置分页查询拦截器进行分页查询 1.首先,打开mybatis-plus官网的插件(插件主体) 或者点击mybatis-plus插件 我是配置在s…

基于Java汽车在线租赁管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

C语言-关键字

关键字就是c语言已经定义好的名字,直接可以拿过来使用,不需要再次定义 1 数据类型相关的关键字 用于定义变量或者类型 定义变量的语法结构: 类型 变量名; 拓展:变量名属于标识符,标识符(变量…

希尔贝壳参与构建可信人工智能数据空间,助力大模型行业应用落地

2023年5月30日,由中国信息通信研究院、浙江省经济和信息化厅、杭州市人民政府、中国人工智能产业发展联盟主办的杭州通用人工智能发展论坛在未来科技城圆满落幕。本次会议以“大模型应用机遇和挑战”为主题,众多产学研代表现场参会,共同探讨人…

路径规划算法:基于未来搜索优化的路径规划算法- 附代码

路径规划算法:基于未来搜索优化的路径规划算法- 附代码 文章目录 路径规划算法:基于未来搜索优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…

异常数据检测 | Python实现基于高斯概率分布的异常数据检测

文章目录 文章概述模型描述源码分享学习小结参考资料文章概述 高斯分布也称为正态分布。它可以被用来进行异常值检测,不过我们首先要假设我们的数据是正态分布的。不过这个假设不能适应于所有数据集。但如果我们做了这种假设那么它将会有一种有效的方法来发现异常值。 模型描述…

RK3288 Android8.1添加lvds以及gt9触摸屏(一)

我们公司的屏幕是分为两部分 1.lvds负责屏幕亮起,显示UI 2.gt9触摸屏负责触摸点击反馈操作 现在先说lvds如何配置 RK的LVDS屏调试,主要是配置正确LVDS的dts,配置正确基本都是可以点亮的 1 首先拿到LVDS屏厂商给的屏规格书,规格…

哪个公司的 CEO 不想拥有一个自己的数字克隆?

⚠️ FBI Warning:本文纯属作者自娱自乐,数字人的观点不代表 CEO 本人的观点,请大家不要上当受骗!! 哪个公司的 CEO 不想拥有一个自己的数字克隆? 想象🤔一下,如果 CEO 数字克隆上线…

ISP下载原理分析

STM32的启动方式,系统存储器启动就是通过ISP下载 ISP简介 ISP下载是指可以通过串行外设,直接将程序下载Flash中,然后自动运行程序的启动方式。 ISP的时候需要用到bootloder(自举程序),bootloader存储在STM32内部的自举ROM存储器…

wordpress去除分类URL的categpory

前言 在日常使用Wordpress搭建网站时,发现文章或者分类页的URL地址中默认带有Category,URL层级过长会影响我们网站SEO的优化,也不利于用户体验。这里讲一下如何去除URL中categpory的方法。 操作 第一步先登录到WordPress后台,然…

【论说文】段落与结构

结构和段落 开头和结尾 怎么写开头呢?基本套路就是用三句话。即表达清楚三层意思,第一句话是用简短的话来概括材料,但是不要照抄。写论说文,不是就事论事,而是就事论理。第二句话是过渡句。第三句,写出来中…

IDEA整合GO并创建module工程

IDEA整合Go 安装包环境配置idea配置并创建test mode 安装包 1.去官网下载对应还的安装包 官网下载地址 我选择下载的window 版本: 直接按照对应的目录,然后点击下一步 环境配置 1.配置go环境变量 在高级环境变量PAHT中添加安装包的**/bin 目录&…

Java网络开发(Tomcat同步数据增删改查)—— 用Jsp语法实现同步请求的 增删改查

目录 引出显示所有数据到前端(1)前端代码:list.jsp(2)后端代码:CompanyListServlet.java 新增数据---转发类型信息---新增信息业务(1)在list.jsp页面点击添加(2&#xff…

SQL调优:让Java内存分担计算

作者: 剽悍一小兔 CSDN前端优质创作者,打破编程小说次元壁第一人《JavaScript百炼成仙》作者,专注Java硬核干货分享,分享创造快乐,技术成就梦想! 我们在工作中,经常会因为一条慢sql调半天。这一节&#xff…

Jenkins集成钉钉通知插件的具体步骤怎么做你知道吗?

最近公司要求工作务必使用钉钉,其他聊天软件不再用于工作沟通了。虽然很抓狂,但是上面的决定不可违逆,只好转战钉钉。虽然强制使用钉钉挺令人反感的,但阿里在这款软件上确实下了些功夫,比如jenkins集成钉钉通知插件后&…

MySQL 数据库基础

这里写目录标题 一、Mysql的基本概念数据库管理系统(DBMS)数据库系统 二、数据库的发展史三、 主流的数据库介绍数据库分为关系型数据库与非关系型数据库关系型数据库非关系型数据库介绍 四、 操作Mysql常用的数据类型:常看数据库结构查看当前…

Linux内核中内存管理相关配置项的详细解析16

接前一篇文章:Linux内核中内存管理相关配置项的详细解析15 三十五、Data Access Monitoring 此项展开后如下图所示: “DAMON: Data Access Monitoring Framework”项默认不选中。如果将其选中,则页面变为: 1. DAMON: Data Access…

Kafka学习---1、Kafka 概述、Kafka快速入门

1、Kafka概述 1.1 定义 1、Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要是应用于大数据实时处理领域。 2、发布/订阅:消息的发布者不会将信息直接发送给特定的订阅者,而是将发布的信息分…