本书专为有一定 Spark 基础,但机器学习知识尚处零基础阶段的读者量身打造。我们深知,许多读者怀揣着利用 Spark 开发机器学习应用的热情,却被 Python 这一在机器学习领域广泛使用的编程语言所阻碍。市面上多数机器学习资料紧密围绕 Python 展开,使得不熟悉 Python 的读者望而却步。本书正是为解决这一痛点而生,我们将带领读者探索基于Scala语言的Spark 的机器学习开发之路,无需过度依赖 Python 机器学习框架,为您扫除学习障碍。
书中所有代码均基于Hadoop 3.x 和 Spark 3.5.x。
- 目录
-
第1章 Spark机器学习库概述
-
11机器学习概述
- 111 什么是机器学习?
- 112 机器学习算法分类
- 113 机器学习数据描述
- 114 机器学习过程
- 12 Spark机器学习库
- 13 Spark机器学习管道
-
11机器学习概述
-
第2章 Spark数据探索和预处理
-
21读取数据源
- 211 文本文件数据源
- 212 CSV文件数据源
- 213 JSON文件数据源
- 214 Parquet文件数据源
- 215 ORC文件数据源
- 216 JDBC数据源
-
22数据探索
- 221 Spark数据简单探索
- 222 Spark数据质量分析
- 223 Spark数据特征分析
- 224 Spark统计API
- 225 Spark统计指标
- 225 Spark数据探索示例
-
23 Spark数据预处理
- 231 Spark数据清洗
- 232 Spark数据集成
- 233 Spark属性转换
-
24 Spark数据预处理示例
- 241 京东股票历史数据预处理
- 242 电商美妆销售数据预处理
-
21读取数据源
-
第3章 Spark ML特征工程
- 31特征工程概念
- 32特征分类
-
32特征转换-连续特征
- 321 连续特征离散化
- 322 连续特征标准化
-
33特征转换-分类特征
- 331 StringIndexer
- 332 IndexToString
- 333 VectorIndexer
- 334 OneHotEncoder
-
34特征转换-文本数据
- 341 文本分词
- 342 停止词
- 343 创建单词组合n-gram
- 344 将单词转换为数字表示形式
-
35特征操作
- 351 主成分分析(PCA)
- 352 特征交互(Interaction)
- 353 多项式展开
- 354 RFormula转换
- 355 特征装配
-
36特征选择
- 361 卡方假设检验
- 362 卡方选择器
- 363 单变量特征选择器
-
第4章 Spark ML分类算法基础
-
41分类任务概述
- 411 懒惰的学习者Vs渴望的学习者
- 412 不同类型的分类任务
- 413 Spark ML库的分类算法实现
-
42 Logistic回归实现二分类任务
- 421 基本原理
- 422 示例:客户购买预测
-
43 Logistic回归实现多分类任务
- 431 one-vs-one和one-vs-rest策略
- 432 示例:鸢尾花分类预测
-
44多项Logistic回归实现多分类任务
- 441 Softmax函数
- 442 示例:手写数字识别
-
45分类模型评估
- 451 混淆矩阵
- 452 ROC曲线和AUC值
- 453 正确选择评价指标的策略
- 454 示例:客户购买预测模型评估
- 455 示例:鸢尾花分类预测模型评估
- 456 示例:手写数字识别预测模型评估
-
46模型选择与调优
- 461 参数调优
- 462 交叉验证
- 463 Spark ML模型选择
-
47模型保存和加载
- 471 MLWriter抽象类
- 472 MLReader抽象类
- 473 示例:存储和调用最优模型
-
48应用机器学习管道
- 481 管道相关的API
- 482 管道的存储和加载
- 483 机器学习管道示例
- 484 示例:垃圾邮件分类
-
41分类任务概述
-
第5章 Spark ML分类算法进阶
-
51决策树分类器
- 511 决策树算法简介
- 512 决策树算法原理
- 513 Spark决策树分类器
- 514 示例:使用决策树预测鸢尾花分类
-
52朴素贝叶斯分类器
- 521 贝叶斯定理
- 522 贝叶斯推断
- 523 全概率公式
- 524 贝叶斯定理应用
- 525 Spark贝叶斯分类器
- 526 示例:Spark朴素贝叶斯分类器
-
53多层感知机分类器
- 531 感知机算法原理
- 532 感知机分类实现
- 533 多层感知机算法
- 534 Spark多层感知机分类器
- 535 示例:Spark多层感知机分类器
-
54线性支持向量机分类器
- 541 支持向量机算法简介
- 542 线性支持向量机
- 543 非线性支持向量机
- 544 示例:Spark SVM实现分类任务
-
55因子分解机分类器
- 551 因子分解机算法简介
- 552 因子分解机特征工程
- 552 示例:Spark FM分类器实现二分类任务
-
51决策树分类器
-
第6章 Spark ML回归算法基础
-
61回归任务概述
- 611 回归分析介绍
- 612 实现回归的不同方法
- 613 回归与分类的区别
-
62线性回归算法原理
- 621 线性回归算法简介
- 622 线性回归算法理解
- 623 多元线性回归
- 63 Spark ML回归算法实现
-
64 线性回归实现二手房价格预测
- 641 Spark回归算法类LinearRegression
- 642 示例:二手房价格预测
-
64回归模型评估
- 641 决定系数或R平方(R2)
- 642 均方根误差(RMSE)
- 643 过拟合与欠拟合
- 644 线性回归中的假设
- 645 示例:二手房价格预测模型评估
- 65应用机器学习管道
- 66回归模型调优
- 67模型保存和加载
-
61回归任务概述
-
第7章 Spark ML回归算法进阶
-
71广义线性回归
- 711 什么是广义线性回归
- 712 广义线性回归示例
-
72决策树回归
- 721 决策树回归算法
- 722 决策树回归示例
-
73生存回归
- 731 什么是生存分析
- 732 生存回归模型
- 733 生存回归示例
-
74保序回归
- 741 什么是保序回归
- 742 保序回归模型
- 743 保序回归示例
-
75因子分解机回归
- 751 因子分解机模型
- 752 因子分解机示例
-
71广义线性回归
-
第8章 Spark ML聚类算法
- 81聚类任务概述
- 82理解K-Means聚类算法原理
- 83 Spark ML聚类算法实现
- 84示例:应用聚类算法对鸢尾花进行分类
- 85示例:应用聚类算法对学生的知识水平进行分类
-
第9章 Spark ML推荐算法
-
91协同过滤算法介绍
- 911 基于用户的协同过滤(UserCF)
- 912 基于物品的协同过滤(ItemCF)
- 913 选择UserCF还是ItemCF?
- 914 基于矩阵分解的协同过滤
-
92 Spark协同过滤算法实现
- 921 Spark ALS算法实现
- 922 模型超参数
- 923 冷启动策略
- 924 Spark.ml ALS算法应用示例
-
93示例:构建幽默故事推荐系统
- 931 加载数据集
- 932 数据探索
- 933 拆分数据集
- 934 模型训练和预测
- 935 模型评估
- 936 模型调优
- 937 模型存储与加载
- 938 推荐幽默故事
-
94频繁模式挖掘
- 941 理解频繁模式挖掘算法
- 942 频繁模式挖掘支持业务分析
- 943 Spark实现FPGrowth
- 944 Spark实现PrefixSpan
-
95示例:使用FP-Growth的市场购物篮分析
- 951 什么是购物蓝分析
- 952 示例流程和数据说明
- 953 数据摄取
- 954 数据探索
- 955 整理购物篮
- 956 训练ML模型
- 957 查看关联规则
-
91协同过滤算法介绍
-
第10章 Spark ML集成学习算法
-
101集成学习算法概述
- 1011 装袋(Bagging)
- 1012 提升(Boosting)
-
102随机森林算法
- 1021 随机森林算法简介
- 1022 随机森林算法原理
- 1023 Spark随机森林算法实现
- 1024 示例:使用Spark随机森林分类算法预测婚外情
- 1025 示例:使用Spark随机森林回归算法预测房价
-
103梯度提升决策树算法
- 1031 什么是梯度提升?
- 1032 什么是梯度提升树?
- 1033 梯度提升树算法原理
- 1034 配置梯度提升模型
- 1035 Spark梯度提升树实现
- 1036 示例:CTR广告点击预测
- 1037 示例:波士顿房价预测
- 1038 示例:共享单车租赁数量预测
-
104 XGBoost算法
- 1041 XGBoost算法简介
- 1042 XGBoost4J-Spark项目
- 1043 用XGBoost4J-Spark构建一个ML应用程序
- 1044 用XGBoost4J-Spark构建一个ML管道
- 1045 在生产环境中运行XGBoost4J-Spark
-
105 LightGBM算法
- 1051 LightGBM算法简介
- 1052 SynapseML中的LightGBM
- 1053 LightGBM模型参数
- 1054 LightGBM on Spark应用
-
101集成学习算法概述
-
第11章 Spark自然语言处理
- 111 什么是NLP?
-
112 Spark NLP库简介
- 1121 Spark NPL库的特点
- 1122 为什么我们需要Spark NPL库?
- 1123 Spark NPL库的应用
-
113安装Spark NLP库
- 1131 安装Spark和Java
- 1132 安装Spark NLP
- 114 基本组件和底层技术
-
115 使用注释器
- 1151 DocumentAssembler
- 1152 SentenceDetector
- 1153 Tokenizer
- 1154 RegexTokenizer
- 1154 TextMatcher
- 1155 BigTextMatcher
- 1156 RegexMatcher
- 1157 ChunkTokenizer
- 1158 DateMatcher
- 1159 Normalizer
- 11510 Finisher
- 11511 NGram
- 11512 NGramGenerator
- 11513 SentenceEmbeddings
- 11514 StopWordsCleaner
-
116 使用预训练模型
- 1161 查看可用的预训练模型
- 1162 词性标注
- 1163 词性还原
- 1164 句子检测
- 1165 嵌入
- 1166 文本分类
- 1167 情感分析
- 1168 文本摘要
- 1169 依存句法分析
- 11610 命名实体识别
-
117 使用预训练管道
- 1171 预训练管道介绍
- 1172 explain_document_ml
- 1173 explain_document_dl
- 1174 onto_recognize_entities_sm
- 1175 将预训练管道用于DataFrame
- 1175 使用LightPipeline
- 1176 使用RecursivePipeline
-
118 案例:影评数据情感分析
- 1181 背景和任务目的
- 1182了解影评数据
- 1183 准备影评数据
- 1184 选择预训练模型
- 1185 保存分析结果
- 1186 完整示例代码
- 1187 换一种模型
-
第12章 基于Spark的分布式深度学习
-
121深度学习基础
- 1211 什么是深度学习?
- 1212 深度学习核心概念
-
122深度学习算法
- 1221 深度神经网络(DNN)
- 1222 卷积神经网络(CNN)
- 1223 循环神经网络(RNN)
- 123深度学习框架
- 124 Spark与深度学习结合
-
125 BigDL on Spark
- 1251 BigDL简介
- 1252 了解DLlib库
-
126 BigDL类Keras的API
- 1261 输入和输出形状
- 1262 定义模型
- 1263 核心层API
- 1264 持久化模型
-
127 BigDL支持Spark ML管道的API
- 1271 NNEstimator
- 1272 NNModel
- 1273 NNClassifier
- 1274 NNClassifierModel
- 1275 超参数设置
- 1276 NNImageReader
-
128 优化器
- 1281 Adam优化器
- 1282 SGD优化器
- 1283 Adagrad优化器
-
129 正则化器
- 1291 L1正则化器
- 1292 L2正则化器
- 1293 L1L2正则化器
-
1210 学习率调度器
- 12101 Default学习率调度器
- 12102 Poly学习率调度器
- 12103 Plateau学习率调度器
- 12104 Exponential学习率调度器
- 1211 模型冻结
- 1212 使用TensorBoard可视化训练
-
1213 案例:预测糖尿病的发病
- 12131 创建Scala项目
- 12132初始代码
- 12133分布式数据加载
- 12134模型定义
- 12135分布式模型训练
- 12136分布式评估与推断
- 12137模型保存和加载
- 12138检查点和恢复训练
- 12139监控训练
- 121310 使用Spark ML管道
-
1214 案例:构建CNN模型识别图像
- 12141训练用图像数据集
- 12132初始代码
- 12143 分布式数据加载
- 12144 定义和训练CNN模型
- 12145 预测和评估LeNet CNN模型
-
121深度学习基础
-
附录
- 附录1.Spark练习环境下载
-
附录2词性缩写及其含义
- 名词相关
- 动词相关
- 限定词和介词
- 形容词
- 代词和标点符号
前 言
在数据驱动的时代,机器学习已成为挖掘数据价值、驱动业务决策的核心工具。然而,对于长期深耕大数据领域的Spark开发者而言,一个现实的困境始终存在—机器学习的主流生态几乎被Python“垄断”。无论是TensorFlow、PyTorch,还是Scikit-learn,这些工具链的学习成本迫使许多Spark开发者不得不“绕道”Python,甚至陷入“学Spark还是学Python”的两难选择。
为什么要写这本书?
本书的诞生源于一个简单的信念:Spark开发者不应被强迫学习另一门语言和框架才能掌握机器学习。Spark自身拥有强大的分布式计算能力(Spark MLlib、Spark ML)和日趋完善的机器学习库,完全可以在大数据生态中原生实现从特征工程到模型训练的完整流程。遗憾的是,市面上的资料要么过于分散,要么默认读者已具备Python机器学习经验,这让许多Spark用户望而却步。
本书以零机器学习基础的Spark开发者为起点,通过清晰的逻辑、直观的案例和可直接运行的代码,系统性地讲解如何仅用Spark构建机器学习流水线。书中所有示例均基于Scala API设计,为读者开辟了一条不依赖Python机器学习框架,直接基于Spark进行机器学习开发的全新路径。这种独特的视角和讲解方式,极大地降低了读者的学习门槛,满足了特定读者群体的迫切需求。
本书特色
1)三阶学习框架,步步为营
每章采用统一结构:
ü 原理速览:用通俗语言解释算法核心思想(如“决策树如何做选择题”“聚类如何物以类聚”),刻意避免复杂数学推导,聚焦直觉理解。
ü Spark实现:逐行解析Spark MLlib/ML API,对比不同算法的代码范式(。
ü 实战案例:基于真实数据集(如电商用户行为数据)演示全流程开发,提供“可修改、可调试、可扩展”的代码模板。
2)零公式恐惧,代码优先
ü 全书不要求读者具备高等数学或统计学背景,所有算法均通过通俗地讲解来理解。
ü 例如,用“投票机制”解释集成学习,用“距离丈量”说明K-Means等。
3)Zeppelin交互式开发,所见即所得
ü 所有案例均在Apache Zeppelin Notebook中完成,支持代码、可视化图表与文字说明混合编排,降低上下文切换成本。
本书适合谁?
(1)熟悉Spark核心API(RDD、DataFrame)但未接触过机器学习的开发者。
(2)希望直接在Spark集群上部署机器学习模型的大数据工程师。
(3)厌倦了在Python与Spark之间频繁切换,渴望统一技术栈的团队。
你将获得什么?
(1)无需Python的机器学习路径:
ü 从线性回归到集成学习算法,再到自然语言处理,再到深度学习,所有算法均使用Spark MLlib/ML实现,代码可直接嵌入现有Spark作业。
ü 基于Spark独有的分布式机器学习特性,突破单机局限。
(2)开箱即用的开发环境:
ü 提供预配置的虚拟机镜像环境,读者无需耗时搭建环境,5分钟即可运行全书案例。通过本书提供的环境,您可以将更多精力专注于知识的学习与实践,快速上手 Spark 机器学习开发。
ü 无需再为自行搭建复杂的运行环境而苦恼,也不必面对程序运行过程中各种不可测的故障原因,告别“跑不通代码”的挫败感。
(3)聚焦实战的渐进式学习:
每章以真实业务场景切入(如用户分群、异常检测),通过“问题定义-数据准备-模型迭代-部署优化”的全流程演练,培养工程化思维。- 《Python爬虫技术》 (3007次下载)
- 《Spark实用教程_scala语言》 (261次下载)
- 《Flink实用教程_scala和python双语版》 (84次下载)
- 《PySpark实用教程_python语言》 (44次下载)
- 《Spark机器学习_scala语言》 (15次下载)
挣积分
用户可以上传项目资源到本站,我们会根据资源的质量和价值计算积分给用户。
用户可以使用自己账号下的积分换取本站VIP资源(教程、项目、图书等)。
请联系我们
- Email:zz_kapper@163.com
- QQ:185314368(张老师)