91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spark MLlib之零 構建通用的解析矩陣程序

發布時間:2020-08-06 06:23:38 來源:網絡 閱讀:1366 作者:996440550 欄目:大數據

在使用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 = {}

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新建县| 华亭县| 东乌珠穆沁旗| 本溪市| 临泉县| 苍南县| 寿光市| 于都县| 鄂托克旗| 高雄市| 加查县| 南丹县| 石首市| 汉沽区| 中方县| 民和| 沅江市| 白山市| 和平县| 浮山县| 宿迁市| 田东县| 司法| 靖宇县| 辉南县| 兴安盟| 包头市| 西城区| 乌苏市| 易门县| 永福县| 万年县| 怀仁县| 虎林市| 东乌珠穆沁旗| 黎川县| 门源| 满城县| 扶风县| 赤壁市| 左云县|