Spark学习10_1 sparkMllib入门与相关资料索引

目录

  • 资料
  • mllib
    • 统计
    • 相关性分析
    • KMeans聚类算法
    • SVM算法
    • 其他算法实例的文件目录位置

资料

Spark机器学习库(MLlib)中文指南
关于spark机器学习的知乎专栏
Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介
基本Kmeans算法介绍及其实现
spark MLlib 概念 1:相关系数( PPMCC or PCC or Pearson‘s r皮尔森相关系数) and Spearman‘s correlation(史匹曼等级相关系数)
皮尔森相关系数定义: 协方差与标准差乘积的商。

机器学习中的算法(2)-支持向量机(SVM)基础

mllib

对于我这种以前就是听一听机器学习里面的名词没深入的学过的人来说,这简直就是个庞然大物,今天这个就是个入门,后面在这里要补上很多东西。
下面是对于sparkMllib的介绍:
MLlib(Machine Learning Library) 是 Spark 的机器学习(ML)库。其目标是使实用的机器学习具有可扩展性并且变得容易,它能够较容易地解决一些实际的大规模机器学习问题。在较高的水平上,它提供了以下工具:

  • ML Algorithms (ML 算法): 常用的学习算法,如分类,回归,聚类和协同过滤
  • Featurization (特征): 特征提取,变换,降维和选择
  • Pipelines (管道): 用于构建,评估和调整 ML Pipelines 的工具
  • Persistence (持久性): 保存和加载算法,模型和 Pipelines
  • Utilities (实用): 线性代数,统计学,数据处理等

统计

这是个简单的例子

//导入统计学支持需要的包
import org.apache.spark.mllib.stat.{MultivariateStatisticalSummary, Statistics}
import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.rdd.RDD
//denseArray是统计学学库支持的
val array1: Array[Double] = Array[Double](60, 70, 80, 0)
val array2: Array[Double] = Array[Double](80, 50, 0, 90)
val array3: Array[Double] = Array[Double](60, 70, 80, 0)
val denseArray1 = Vectors.dense(array1)
val denseArray2 = Vectors.dense(array2)
val denseArray3 = Vectors.dense(array3)

val seqDenseArray: Seq[Vector] = Seq(denseArray1, denseArray2, denseArray3)
//用三个数组生成的向量序列生成RDD
val basicTestRDD: RDD[Vector] = sc.parallelize[Vector](seqDenseArray)

//获取统计信息
val summary: MultivariateStatisticalSummary = Statistics.colStats(basicTestRDD)

// 每一列的平均分数,即每门课三位学生的平均分数
println(summary.mean)

// 每一列的方差
println(summary.variance)

// 每一列中不为0的成绩数量
println(summary.numNonzeros)

相关性分析

计算两组数据之间的相关性。MLlib 对 Pearson 相关系数和 Spearman 等级相关系数算法提供支持。
下面这个例子假定的场景是有八个用户,他们在服务器上有各自早晚的学习时间的记录,要分析上午用户学习的时间和晚上用户学习时间之间的相关性。
然后就是通过这些数据生成RDD

val morningStudyTime: RDD[Double] = sc.parallelize(List(55, 54, 60, 60, 45, 20, 85, 40), 2)
val nightStudyTime: RDD[Double] = sc.parallelize(List(80, 90, 80, 90, 70, 20, 100, 60), 2)

选择 Pearson 相关系数算法,并调用corr()函数进行计算,并输出结果

val corrType = "pearson"
val corr: Double = Statistics.corr(morningStudyTime, nightStudyTime, corrType)
println(s"Correlation: \t $corr")

KMeans聚类算法

数据是这样的:

导入包

import org.apache.spark.mllib.clustering.{KMeans, KMeansModel}
import org.apache.spark.mllib.linalg.Vectors

创建RDD,进而创建Vector,这里使用的数据源是官方自带的,供测试用的数据源

// 读取数据文件,创建RDD
val dataFile = "/opt/spark-2.4.4-bin-hadoop2.7/data/mllib/kmeans_data.txt"
val lines = sc.textFile(dataFile)

// 创建Vector,将每行的数据用空格分隔后转成浮点值返回numpy的array
val data = lines.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()

使用train函数,生成模型

val numClusters = 2
val numIterations = 20

val model = KMeans.train(data, numClusters, numIterations)

统计聚类错误的样本比例,输出聚集中心

val WSSSE = model.computeCost(data)
println(s"Within Set Sum of Squared Errors = $WSSSE")
//输出模型的聚集中心
model.clusterCenters

SVM算法

这个看了一下算法的简介,现在没有太看懂,其实敲完了代码也没有懂,因为api里不涉及这个算法本身。
看不懂,我就学,脑袋学掉了碗大个疤。
先学下api怎么用
首先,需要用到这些包

import org.apache.spark.mllib.classification.{SVMModel, SVMWithSGD}
import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics
import org.apache.spark.mllib.util.MLUtils

数据文件是官方提供的测试数据,

val dataFile = "/opt/spark-2.4.4-bin-hadoop2.7/data/mllib/sample_libsvm_data.txt"
val data = MLUtils.loadLibSVMFile(sc, dataFile)

分割数据,一部分(80%)用来训练,一部分(20%)用来测试

// 随机分割数据,第一个参数指定了分割的比例,第二个参数是一个随机数种子
val splits = data.randomSplit(Array(0.8, 0.2), seed = 9L)
val training = splits(0).cache()
val test = splits(1)

// 打印分割后的数据量
println("TrainingCount:"+training.count())
println("TestingCount:"+test.count())

开始训练,调用SVMWithSGD中的train()函数,这个函数的第一个参数为 RDD 训练数据输入,第二个参数为迭代次数,这里我们设置迭代 100 次,此外这个函数还有其他的参数来设置 SGD 步骤,正则化参数,每轮迭代输入的样本比例,正则化类型等:

val model = SVMWithSGD.train(training, 100)

得到的 SVM 模型后,我们需要进行后续的操作并把结果输出,清除默认的阈值,清除后会输出预测的数字:

model.clearThreshold()

使用测试数据进行预测计算

val scoreAndLabels = test.map { point =>
  val score = model.predict(point.features)
  (score, point.label)
}

输出结果,包含预测的数字结果和 0/1 结果:

for ((score, label) <-  scoreAndLabels.collect())
println(score+","+label)

其他算法实例的文件目录位置

ml和mllib算法实例的位置

/opt/spark-2.4.4-bin-hadoop2.7/examples/src/main/scala/org/apache/spark/examples/mllib
/opt/spark-2.4.4-bin-hadoop2.7/examples/src/main/scala/org/apache/spark/examples/ml/

官方提供的算法测试数据的位置

/opt/spark-2.4.4-bin-hadoop2.7/data/mllib

原文地址:https://www.cnblogs.com/ltl0501/p/12245201.html

时间: 2024-10-10 21:50:42

Spark学习10_1 sparkMllib入门与相关资料索引的相关文章

Spark学习笔记总结-入门资料精化

Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用.减少了延时处理,提高性能效率实用灵活性.也可以与hadoop切实相互结合. spark核心部分分为RDD.Spark SQL.Spark Streaming.MLlib.GraphX.Spark R等核心组件解决了很多的大数据问题,其完美的框架日受欢迎.其相应的生态环境包括zepplin等可视化方面,正日益壮大.大型公

spark学习笔记总结-spark入门资料精化

Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用.减少了延时处理,提高性能效率实用灵活性.也可以与hadoop切实相互结合. spark核心部分分为RDD.Spark SQL.Spark Streaming.MLlib.GraphX.Spark R等核心组件解决了很多的大数据问题,其完美的框架日受欢迎.其相应的生态环境包括zepplin等可视化方面

Spark 学习: spark 原理简述与 shuffle 过程介绍

Spark学习: 简述总结 Spark 是使用 scala 实现的基于内存计算的大数据开源集群计算环境.提供了 java,scala, python,R 等语言的调用接口. Spark学习 简述总结 引言 1 Hadoop 和 Spark 的关系 Spark 系统架构 1 spark 运行原理 RDD 初识 shuffle 和 stage 性能优化 1 缓存机制和 cache 的意义 2 shuffle 的优化 3 资源参数调优 4 小结 本地搭建 Spark 开发环境 1 Spark-Scal

大数据学习应该如何入门

一.整体了解数据分析--5小时 新人们被"大数据"."人工智能"."21世纪是数据分析师的时代"等等信息吸引过来,立志成为一名数据分析师,于是问题来了,数据分析到底是干什么的?数据分析都包含什么内容? 市面上有很多讲数据分析内容的书籍,在此我推荐<深入浅出数据分析>,此书对有基础人士可称消遣读物, 但对新人们还是有一定的作用.阅读时可不求甚解,重点了解数据分析的流程.应用场景.以及书中提到的若干数据分析工具,无需纠结分析模型的实现.5

Cocos2d入门--1-- 初涉相关属性或代码

 Cocos2d入门--1-- 初涉相关属性或代码 Cocos2d vision:  cocos2d-x-3.8.1 万丈高楼,起于累土.对于一个游戏框架的学习,其实在于框架功能的使用积累,学会了如何在cocos2d游戏引擎的基础上使用它提供的各种功能,并灵活运用, 以及学会查阅Cocos2d官方提供的API文档.相信自己也能开发出自己喜爱或者让别人羡慕的游戏. 目录: 1>认识origin和visibleSize以及cocos2d的基础绘画类DrawNode的简单实用 2>认识 CCLOG(

hacker入门篇——相关书籍

1.<黑客大曝光:网络安全机密与解决方案(第7版)> 简介:这是一本老外写的书,比较适合入门看,内容包括一些基本的攻防流程,基本工具软件,网络安全的一些基本概念等,对整个网络安全和黑客入侵都有比较全面的介绍.对Windows和Unix系统做了分别得介绍,新版(第7版)还对现今新兴技术无线网.移动设备等方面的安全知识做了介绍.虽然关于具体细节的介绍比较少,但通过这本书可以让初学小白们对黑客有一个全面完整的认识.推荐作为第一本读物阅读. PDF: 第六版:http://pan.baidu.com/

CSS学习之菜鸟入门

一.基础学习 1.何为CSS CSS是Cascading Style Sheets(层叠样式表)的简称,是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语 言). CSS文件也可以说是一个文本文件,它包含了一些CSS标记,CSS文件必须使用css为文件名后缀, 可以通过简单的更改CSS文件,改变网页的整体表现形式,可以减少我们的工作量,所以 她是每一个网页设计人员的必修课. 2.语法 2.1引用 链接式(href <head> <link rel="styl

【转载】Spark学习 &amp; 机器学习

继续Spark学习,开始的文章:http://www.cnblogs.com/charlesblc/p/6106603.html 参考了这个系列的文章: http://www.cnblogs.com/shishanyuan/p/4699644.html <倾情大奉送--Spark入门实战系列>实验数据下载在上面那篇开始的文章有说明. 先看了上手实验的一部分,因为之前Spark已经安装好了,见 http://www.cnblogs.com/charlesblc/p/6014158.html 上手

Spark学习体系

底理解Spark,能够分为以下几个层次. 1 Spark基础篇 1.1 Spark生态和安装部署 在安装过程中,理解其基本操作步骤. 安装部署 Spark安装简单介绍 Spark的源代码编译 Spark Standalone安装 Spark Standalone HA安装 Spark应用程序部署工具spark-submit Spark生态 Spark(内存计算框架) SparkSteaming(流式计算框架) Spark SQL(ad-hoc) Mllib(Machine Learning) G