机器学习实战10-基于spark大数据技术与机器学习的结合应用实战

news2024/11/24 17:17:05

大家好,我是微学AI,今天给大家介绍一下机器学习实战10-基于spark大数据技术与机器学习的结合应用实战,Spark是一种快速、通用的大数据处理框架。它是由加州大学伯克利分校AMPLab开发。Spark提供了一个分布式计算的平台,可以在集群中并行处理大规模的数据集。
在这里插入图片描述

目录
1.大数据技术介绍
2.Spark的特点
3.为什么要用Spark
4.Spark与Pandas的区别
5.使用Python和Spark开发大数据应用
6.基于spark的机器学习训练代码

1.大数据技术介绍

大数据技术是指为了处理和分析大规模数据而发展的一系列技术和工具。随着互联网、物联网和各种传感器技术的发展,我们能够采集到越来越多的数据。这些数据通常规模庞大、复杂多样,并且具有高速增长的特点。大数据技术致力于解决如何高效地存储、处理和分析这些海量数据的问题。

以下是几种常见的大数据技术:

1.分布式存储系统:大规模数据的存储需要使用分布式存储系统,以提供高容量、高可靠性和高扩展性。例如,Hadoop分布式文件系统(HDFS)和Apache Cassandra等分布式数据库系统。

2.分布式计算框架:大数据处理过程中需要进行分布式计算,以实现对数据的高效处理和分析。Hadoop MapReduce是最早的分布式计算框架,而Apache Spark则是目前流行的快速、通用的大数据处理框架。

3.数据管理和治理工具:大规模数据管理和治理是一个复杂的任务。数据管理工具帮助组织和管理数据,包括数据的采集、清洗、转换和整合等。数据治理工具则关注数据质量、安全性和合规性等方面。

4.数据仓库和数据湖:数据仓库是一种用于存储和管理结构化数据的系统,提供了灵活的查询和分析功能。数据湖是一个集中存储各种类型数据的汇聚地,可以在需要时进行处理和分析。

5.数据挖掘和机器学习:大数据技术可以用于数据挖掘和机器学习,帮助从大规模数据中发现有价值的信息和模式。常见的工具和算法包括Apache Hadoop、Apache Spark的机器学习库(MLlib)、TensorFlow等。

6.数据可视化和报告工具:数据可视化工具帮助将数据转化为可视化图表和仪表板,使数据更易于理解和分析。报告工具则可以生成数据分析结果的报告和展示。

大数据技术的应用非常广泛,涵盖了各个行业和领域。例如,在金融领域,大数据技术可以用于风险管理和欺诈检测;在医疗领域,可以用于医学图像分析和疾病预测;在社交媒体领域,可以用于用户行为分析和个性化推荐等。

2.Spark的特点

快速性能:Spark使用内存计算(in-memory computing)技术,将数据存储在集群的内存中,从而加速数据处理过程。此外,Spark还利用了RDD(弹性分布式数据集)这一抽象概念,通过内存的数据共享和数据分片的方式,实现了高效的并行计算。

1.多种数据处理支持:Spark支持多种数据处理模型,包括批处理、交互式查询、流处理和机器学习等。你可以使用Spark的API(如DataFrame和SQL)来进行数据处理和分析,还可以结合其他库(如MLlib、GraphX)进行机器学习和图处理。

2.易于使用:Spark提供了易于使用的API,包括Java、Scala、Python和R等编程语言的接口。这使得开发者可以使用自己熟悉的语言来编写Spark应用程序和脚本。

3.可扩展性:Spark可以在各种规模的集群上运行,从小规模的笔记本电脑到大规模的集群。它可以与其他大数据工具和框架(如Hadoop、Hive、HBase等)无缝集成,提供了灵活可扩展的大数据处理解决方案。
在这里插入图片描述

3.为什么要用Spark

大数据处理通常涉及到海量数据的存储、处理和分析,而Spark作为一种快速、通用的大数据处理框架,有以下几个重要原因使其成为流行的选择:

1.高性能:Spark使用内存计算技术,在集群的内存中缓存数据,从而加速了数据处理过程。相比于传统的磁盘读写方式,内存计算可以显著提高数据处理速度。此外,Spark还利用RDD这一抽象概念实现了数据共享和并行计算,进一步提高了性能。

2.多种数据处理模型支持:Spark支持批处理、交互式查询、流处理和机器学习等多种数据处理模型。这意味着在同一个框架下可以进行各种类型的大数据处理任务,不再需要使用不同的工具和系统,从而简化了开发和部署的复杂性。

3.易用性和灵活性:Spark提供了易于使用的API,包括Java、Scala、Python和R等编程语言的接口。这使得开发者可以使用自己熟悉的语言来编写Spark应用程序和脚本。同时,Spark与其他大数据工具和框架(如Hadoop和Hive)无缝集成,可以灵活地构建大数据处理流程。

4.Spark与Pandas的区别

使用Spark读取CSV文件和使用pandas的pd.read_csv读取CSV文件有哪些区别呢:

1.分布式计算:Spark是一个分布式计算框架,可以处理大规模的数据集。它能够并行处理数据,利用集群中的多个节点进行计算,从而提高处理速度。相比之下,pandas是在单台机器上运行的,对于大规模数据集可能会受到内存限制。

2.数据处理能力:Spark提供了丰富的数据处理功能,包括数据清洗、转换、特征工程等。通过Spark的DataFrame API,你可以使用SQL-like的语法执行各种操作,如过滤、聚合、排序等。相对而言,pandas也提供了类似的功能,但Spark的数据处理能力更强大、更灵活。

3.多语言支持:Spark支持多种编程语言,包括Scala、Java、Python和R等。这意味着你可以使用你最熟悉的编程语言进行数据处理和机器学习。而pandas主要使用Python编写,只支持Python语言。

4.扩展性:Spark可与其他大数据工具和框架(如Hadoop、Hive、HBase等)无缝集成,为构建端到端的大数据处理和机器学习流水线提供了便利。此外,Spark还提供了丰富的机器学习库(如MLlib)和图处理库(如GraphX),方便进行复杂的机器学习任务。

5.数据分片存储:Spark将数据划分为多个分片并存储在集群中的不同节点上。这种数据分片存储方式有助于提高数据的并行读取和处理性能。而pandas将整个数据集加载到内存中,对于大型数据集可能导致内存不足或性能下降。

5.使用Python和Spark开发大数据应用

在本文中,我们将探讨如何使用Python和Spark开发一个大数据应用。我们将加载一个CSV文件,执行机器学习算法,然后进行数据预测。对于初学者而言,这是一个很好的入门实例,而对于经验丰富的开发者,也可能会发现新的想法和观点。

环境准备

在开始之前,我们需要安装和配置以下工具和库:

Python3
Apache Spark
PySpark
Jupyter Notebook
在本教程中,我们将使用Jupyter Notebook作为我们的开发环境,因为它便于我们展示和解释代码。

加载CSV文件

首先,我们需要加载一个CSV文件。在这个例子中,我们将使用一个简单的数据集,其中包含一些模拟的用户数据。

6.基于spark的机器学习训练代码

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("Python Spark CSV").getOrCreate()

# 利用inferSchema参数进行类型推断
df = spark.read.format('csv').option('header', 'true').option('inferSchema', 'true').load('GDM.csv')

df.show()

from pyspark.sql.functions import col

# 删除含有空值的行
df = df.dropna()

# 转换数据类型
df = df.withColumn("AGE", col("AGE").cast("integer"))

df.show()

from pyspark.ml.feature import VectorAssembler
from pyspark.ml.classification import LogisticRegression

# 选择用于预测的特征列
assembler = VectorAssembler(
    inputCols=["GW", "APB", "APA1", "CRE", "CHOL", "UA","ALP", "TG", "GLU"],
    outputCol="features")

# 将数据集转换为适合机器学习的格式
output_data = assembler.transform(df)

# 构建逻辑回归模型
lr = LogisticRegression(featuresCol='features', labelCol='GDM')

# 划分数据集为训练集和测试集
train_data, test_data = output_data.randomSplit([0.7, 0.3])


# 训练模型
lr_model = lr.fit(train_data)

# 测试模型
predictions = lr_model.transform(test_data)

# 展示预测结果
#predictions.show()

from pyspark.ml.evaluation import BinaryClassificationEvaluator

# 构建评估器
evaluator = BinaryClassificationEvaluator()

predictions = predictions.withColumnRenamed("GDM", "label")
# 计算AUC
auc = evaluator.evaluate(predictions)

print(f"AUC: {auc}")

本文用Python和Spark创建一个大数据应用的基本步骤。本文它涵盖了创建大数据应用的基本步骤:加载数据,预处理数据,训练模型,测试模型,以及评估模型。希望你能从这个例子中学到一些有用的知识。

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

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

相关文章

计算机组成与体系结构 概述

文章目录 计算机组成与体系结构 概述计算机系统概述计算机系统的组成计算机层次结构 计算机性能评价 计算机组成与体系结构 概述 计算机系统概述 计算机系统的组成 计算机的基本部件: 运算器:ALU、GPRs(通用寄存器组)、标志寄…

Java编程教程-Java ObjectStreamClass

ObjectStreamClass作为类的序列化描述符。该类包含类的名称和serialVersionUID。 # 方法 # 示例 toString() It returns a string describing this ObjectStreamClass.Exampleimport java.io.ObjectStreamClass; import java.util.Calendar; public class ObjectStreamCl…

谷歌插件(Chrome扩展) “Service Worker (无效)” 解决方法

问题描述: 写 background 文件的时候报错了,说 Service Worker 设置的 background 无效。 解决(检查)方法: 检查配置文件(manifest.json) 中的 manifest_version 是否为 3。 background 中的…

深入探索Spring的Bean注入:四种方式解析与循环依赖探讨

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Docker-Compose 轻松搭建 Grafana+InfluxDb 实用 Jmeter 监控面板

目录 前言: 1、背景 2、GranfanaInfluxDB 配置 2.1 服务搭建 2.2 配置 Grafana 数据源 2.3 配置 Grafana 面板 3、Jmeter 配置 3.1 配置 InfluxDB 监听器 3.2 实际效果 前言: Grafana 和 InfluxDB 是两个非常流行的监控工具,它们可…

【力扣每日一题】2023.7.20 环形子数组的最大和

题目: 示例: 分析: 题目描述的有点复杂,特别是那个公式,一看到我就烦. 其实意思就是找出一个子数组(连续),要求这个子数组的和是所有子数组中最大的,并且这个数组是环形的,意思就是我这个子数组可以从原数组的尾部开始,到原数组的头部结束,…

Nginx文件下载预览加权限验证的思考和实现

做的项目中多个模块涉及到附件、图片、PDF/Excel等文件的处理,包括预览、导出和下载等功能。对于体积较小的文件,可以直接由后端以流形式传输给前端处理;而较大的文件则需要通过nginx进行转发。但是如果nginx中不设置鉴权服务,可能…

帖子列表和SerializerMixin注意事项

帖子序列化 继承SerializerMixin 即可调用to_dict()序列化 后端 class PostModel(db.Model, SerializerMixin):serialize_only ("id", "title", "content", "create_time", "board", "author")__tablename__ …

Ubuntu22.04上部署Lua开发环境

需求背景 想在Ubuntu22.04上搭建一下Lua的开发环境,其实步骤比较简单的,此文章也适用于Ubuntu主机环境搭建Lua,如果想在在Ubuntu内部署一个容器,然后在容器内搭建Lua的环境,可以先参考容器的创建过程 ubuntu22.04上如何创建有pri…

android adb命令获取处于当前屏幕的Activity

android adb命令获取处于当前屏幕的Activity 使用adb命令: adb shell dumpsys activity activities 输出,例如: ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Display #0 (activities from top to bottom): * Task{38ef601 #5281 typ…

C++-----list

本期我们来讲解list,有了string和vector的基础,我们学习起来会快很多 目录 list介绍 ​编辑 list常用接口 insert erase reverse sort merge unique remove splice 模拟实现 基础框架 构造函数 push_back 迭代器 常见问题 const迭代器 …

BEVPoolv2 A Cutting-edge Implementation of BEVDet Toward Deployment 论文学习

Github Repo: https://github.com/HuangJunJie2017/BEVDet/tree/dev2.0 Arxiv Paper: https://arxiv.org/abs/2211.17111 1. 解决了什么问题? 多相机 3D 目标检测是自动驾驶领域的基本任务,受到学术界和工业界的大量关注。Lift-Splat-Shoot view trans…

Linux基础IO(一)

Linux基础IO 文章目录 Linux基础IOC语言中的文件操作c语言文件打开方式C语言文件操作函数 系统文件操作stdin/stdout/stderropeanclosewriteread 文件描述符重定向什么是重定向dup2 C语言中的文件操作 我们通过两个代码复习一下C语言中的文件操作: int main() {FI…

uniapp-开发APP使用自定义插件

uniapp-开发APP使用自定义插件 需求背景: 项目组开发了一个APP需要使用到打印机的功能、所以需要通过打印机厂商提供的jdk包结合自己的业务融合到uniapp 中。 首先你需要一个懂开发android开发的同事、让他帮忙配合写一些调用方法(调用打印机提供的一些…

态势标绘专题介绍

介绍 这个专栏是专门针对基于Cesium来实现态势标绘的专题专栏,专栏主要实现了30余种态势几何形状的标绘和编辑、文本的标绘和编辑、图片的标绘和编辑以及简单模型的标绘,同时支持标绘结果的导出以及导入。包括最终编写成的一个完整的Vue3.2+TS+Cesium1.107.2的标绘组件。专栏…

【STL】list用法试做_底层实现

目录 一,list 使用 1. list 文档介绍 2. 常见接口 1. list中的sort 2. list sort 与 vector sort效率对比 3. 关于迭代器失效 4. clear 二,list 实现 1.框架搭建 2. 迭代器类——核心框架 3. operator-> 实现 4. const——迭代…

c++11 标准模板(STL)(std::basic_filebuf)(二)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_filebuf : public std::basic_streambuf<CharT, Traits> std::basic_filebuf 是关联字符序列为文件的 std::basic_streambuf 。输入序…

基于AOP实现登录日志和操作日志(新手入门版)

基于AOP实现登录日志和操作日志 目录结构代码PostMan测试代码控制台查看输出解析成JSON如果你觉得对你有帮助的话&#xff0c;请点赞收藏 目录结构 代码 package com.demo.mymaintest.constants;import java.lang.annotation.Documented; import java.lang.annotation.ElementT…

在Debian 12 上安装 PHP 5.6, 7.4

环境&#xff1a;Debian 12 Debian 12 默认的PHP版本为 8.2 如果直接安装php7.4就出现下面的报错&#xff1a; sudo apt-get install libapache2-mod-php7.4 php7.4 php7.4-gd php7.4-opcache php7.4-mbstring php7.4-xml php7.4-json php7.4-zip php7.4-curl php7.4-imap p…

【人工智能】神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略

神经网络、前向传播、反向传播 文章目录 神经网络、前向传播、反向传播前向传播反向传播梯度下降局部最小值多层前馈网络表示能力多层前馈网络局限缓解过拟合的策略前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后,最终得到输出结果的过程。在前向…