spark MLlib之零 构建通用的解析矩阵程序

在使用spark MLlib时,有时候需要使用到一些基础的矩阵(向量),例如:全零矩阵,全一矩阵;以及矩阵之间的运算操作。这里整理了一些常用的矩阵操作方法:

矩阵:

package utils

import java.util.Random

/**

* 密集矩阵,用于封装模型参数

*/

class DenseMatrix(rowNum: Int, columnNum: Int) extends Serializable{

var matrix = Array.ofDim[Double](rowNum, columnNum)

def rows(): Int = {

rowNum

}

def columns(): Int = {

columnNum

}

def apply(i: Int): Array[Double] = {

matrix(i)

}

/**

* 构造0矩阵

*/

def zeros(): DenseMatrix = {

for (i <- 0 until rowNum) {

for (j <- 0 until columnNum) {

matrix(i)(j) = 0

}

}

this

}

/**

* 随机初始化矩阵的值

*/

def rand(): DenseMatrix = {

val rand = new Random(42)

for (i <- 0 until rowNum) {

for (j <- 0 until columnNum) {

matrix(i)(j) = rand.nextDouble

}

}

this

}

def set(i: Int, j: Int, value: Double) {

matrix(i)(j) = value

}

def get(i: Int, j: Int): Double = {

matrix(i)(j)

}

def +(scalar: Double): DenseMatrix = {

for (i <- 0 until rowNum) yield {

for (j <- 0 until columnNum) yield {

matrix(i)(j) += scalar

}

}

this

}

def -(scalar: Double): DenseMatrix = {

this - scalar

}

def +(other: DenseMatrix): DenseMatrix = {

for (i <- 0 until rowNum) yield {

for (j <- 0 until columnNum) yield {

matrix(i)(j) += other(i)(j)

}

}

this

}

def -(other: DenseMatrix): DenseMatrix = {

this + (other * (-1))

}

def *(scalar: Double): DenseMatrix = {

for (i <- 0 until rowNum) yield {

for (j <- 0 until columnNum) yield {

matrix(i)(j) *= scalar

}

}

this

}

}

object DenseMatrix {

def main(args: Array[String]): Unit = {}

}

向量:

package utils

import scala.collection.mutable.HashMap

import org.apache.spark.util.Vector

/**

* 定义一个基于HashMap的稀疏向量

*/

class SparserVector(dimNum: Int) {

var elements = new HashMap[Int, Double]

def insert(index: Int, value: Double) {

elements += index -> value;

}

def *(scale: Double): Vector = {

var x = new Array[Double](dimNum)

elements.keySet.foreach(k => x(k) = scale * elements.get(k).get);

Vector(x)

}

}

object SparserVector {

def main(args: Array[String]): Unit = {}

}

时间: 2024-11-09 10:29:10

spark MLlib之零 构建通用的解析矩阵程序的相关文章

Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”. l“机器学习是对能通过经验自动改进的计算机算法的研究”. l“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准.” 一种经常引用的英文定义是:A computer program is said

Spark MLlib数据类型

MLlib支持几种数据类型:本地向量(local vectors),和存储在本地或者基于RDD的分布式矩阵(matrices).底层的线性代数转换操作是基于Breeze和jblas实现的.在MLlib中有监督学习算法使用的训练样本数据类型被称为"带标签的点(labeled point)". 一.本地向量(Local Vector) 一个本地向量是由从0开始的整型下标和double型数值组成的,存储在单机节点上.MLlib支持两种类型的本地向量:密集(dense)的和稀疏(sparse)

Spark MLlib LDA 源代码解析

1.Spark MLlib LDA源代码解析 http://blog.csdn.net/sunbow0 Spark MLlib LDA 应该算是比較难理解的,当中涉及到大量的概率与统计的相关知识,并且还涉及到了Spark GraphX图计算方面的知识.要想明确当中的原理得要下一番功夫. LDA源代码解析前的基础知识: 1)LDA主题模型的理论知识 參照:LDA数学八卦 2)SparkGraphX 基础知识 http://blog.csdn.net/sunbow0/article/details/

Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 第三章Convolution Neural Network (卷积神经网络) 2基础及源码解析 2.1 Convolution Neural Network卷积神经网络基础知识 1)基础知识: 自行google,百度,基础方面的非常多,随便看看就可以,只是很多没有把细节说得清楚和明白: 能把细节说清

Spark MLlib Deep Learning Neural Net(深度学习-神经网络)1.1

Spark MLlib Deep Learning Neural Net(深度学习-神经网络)1.1 http://blog.csdn.net/sunbow0/ Spark MLlib Deep Learning工具箱,是根据现有深度学习教程<UFLDL教程>中的算法,在SparkMLlib中的实现.具体Spark MLlib Deep Learning(深度学习)目录结构: 第一章Neural Net(NN) 1.源码 2.源码解析 3.实例 第二章Deep Belief Nets(DBNs

Spark MLlib Deep Learning Neural Net(深度学习-神经网络)1.2

Spark MLlib Deep Learning Neural Net(深度学习-神经网络)1.2 http://blog.csdn.net/sunbow0/ 第一章Neural Net(神经网络) 2基础及源码解析 2.1 Neural Net神经网络基础知识 2.1.1 神经网络 基础知识参照: http://deeplearning.stanford.edu/wiki/index.php/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C 2.1.2 反向传导算法

地铁译:Spark for python developers ---构建Spark批处理和流处理应用前的数据准备

使用PySpark和PyData相关库构建应用来分析社交网络中含有Spark的交互信息. 我们从GitHub收集有关Apache Spark的信息, 在Twitter上检查相关的tweets, 使用 Meetup从更广泛的开源社区得到更多Spark 相关感受. ?本章中, 我们将概览各种信息和数据源,理解他们的结构,从批处理到流处理介绍数据处理流水线,要点如下: ?+ 从批处理到流处理介绍数据处理管道, 有效的描述准备构建的应用架构. + 获取各种数据源 (GitHub, Twitter, 和M

spark.mllib源码阅读-分类算法4-DecisionTree

本篇博文主要围绕Spark上的决策树来讲解,我将分为2部分来阐述这一块的知识.第一部分会介绍一些决策树的基本概念.Spark下决策树的表示与存储.结点分类信息的存储.结点的特征选择与分类:第二部分通过一个Spark自带的示例来看看Spark的决策树的训练算法.另外,将本篇与上一篇博文"spark.mllib源码阅读bagging方法"的bagging子样本集抽样方法结合,也就理解了Spark下的决策森林树的实现过程. 第一部分: 决策树模型 分类决策树模型是一种描述对实例进行分类的树形

14.spark mllib之快速入门

简介 ??MLlib是Spark提供提供机器学习的库,专为在集群上并行运行的情况而设计.MLlib包含很多机器学习算法,可在Spark支持的所有编程语言中使用. ??MLlib设计理念是将数据以RDD的形式表示,然后在分布式数据集上调用各种算法.其实,MLlib就是RDD上一系列可供调用的函数的集合. 数据类型 ??MLlib包含一些特有的数据类型,位于org.apache.spark.mllib包(Java/Scala)或pyspark.mllib(Python)中.主要的几个类有: Vect