Spark MLlib
机器学习是什么?
机器学习
数据挖掘有着50多年的发展历史。机器学习就是其子领域之一,特点是利用大型计算机集群来从海量数据中分析和提取知识
机器学习与计算统计学密切相关。它与数学优化紧密关联,为其提供方法、理论和应用领域。机器学习在各种传统设计和编程不能胜任的计算机任务中有广泛应用。典型的应用如垃圾邮件过滤
、光学字符识别(OCR)
、搜索引擎和计算机视觉
。机器学习有时和数据挖掘联用,但更偏向探索性数据分析
,亦称为无监督学习
。
与学习系统的可用输入自然属性不同,机器学习系统可分为3种
。学习算法发现输入数据的内在结构。它可以有目标(隐含模式)
,也可以是发现特征的一种途径。
无监督学习 | 学习系统的输入数据中并不包含对应的标签(或期望的输出) ,它需要自行从输入中找到输入数据的内在结构 |
监督学习 | 系统已知各输入对应的期望输出 系统的目标是学习如何将输入映射到输出 |
强化学习 | 系统与环境进行交互,它有已定义的目标,但没有人类显式地告知其是否正在接近目标 |
Spark MLlib
MLlib是Spark的机器学习(ML)库。其目标是使实用的机器学习可扩展且容易。在较高级别,它提供了以下工具:
- ML算法:常见的学习算法,例如分类,回归,聚类和协同过滤
- 特征化:特征提取,变换,降维和选择
- 管道:用于构建,评估和调整ML管道的工具
- 持久性:保存和加载算法,模型和管道
- 实用程序:线性代数,统计信息,数据处理等。
Spark MLlib案例
基于
DataFrame
的API是主要API
快速入门
- pom.xml
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-mllib -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.2.1</version>
</dependency>
def main(args: Array[String]): Unit = {
// 屏蔽日志
Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
Logger.getLogger("org.apache.jetty.server").setLevel(Level.OFF)
val spark = SparkSession
.builder()
.master("local[*]")
.appName(Demo01.getClass.getName)
.getOrCreate(