14.火花mllib之快速入门

  

简介

  

? ? MLlib是火花提供提供机器学习的库,专为在集群上并行运行的情况而设计。
MLlib包含很多机器学习算法,可在火花支持的所有编程语言中使用。

  

? ? MLlib设计理念是将数据以抽样的形式表示,然后在分布式数据集上调用各种算法。其实,MLlib就是抽样上一系列可供调用的函数的集合。

  

数据类型

  

? ? MLlib包含一些特有的数据类型,位于org.apache.spark.mllib包(Java/Scala)或pyspark.mllib (Python)中。主要的几个类有:

  
      <李>   

    向量   

        <李>   

      一个本地向量(当地向量)。索引是从0开始的,并且是整型,而值为两类型,存储于单个机器内。

        李   <李>   

      MLlib既支持稠密向量也支持稀疏向量,前者表示向量的每一位都存储,后者只存储非零位以节约空间。

        李   <李>   

      向量可以通过mllib.linalg.Vectors类创建

        李   <李> scala李   
      
     <代码>//创建稠密向量
      scala>val denseVec1=Vectors.dense (1.0, 2.0, 3.0)
      denseVec1: org.apache.spark.mllib.linalg。向量=(1.0,2.0,3.0)
      
      scala>val denseVec2=Vectors.dense(阵列(1.0,2.0,3.0))
      denseVec2: org.apache.spark.mllib.linalg。向量=(1.0,2.0,3.0)//创建稀疏向量
      scala>val sparseVec1=Vectors.sparse(4数组(0,2)阵列(1.0,2.0))
      sparseVec1: org.apache.spark.mllib.linalg。向量=(4(0,2)[1.0,2.0]) 
      
        <李> python李   
      ,
     <代码>祝辞的在比;从pyspark.mllib。linalg进口向量
      在在在穴=Vectors.dense ([1.0, 2.0, 3.0])
      在在在窝
      DenseVector ((1.0, 2.0, 3.0))
      在在在温泉=Vectors.sparse (4 (0, 2) [1.0, 2.0])
      在在在水疗中心
      SparseVector({0: 1.0, 2: 2.0})  
      李   <李>   

    LabeledPoint   

        <李>   

      在分类和回归之类的监督式学习(监督学习)算法中使用。

        李   <李>   

      LabeledPoint表示带标签的数据点,包括一个特征向量与一个标签(由一个浮点数表示)。

        李   <李>   

      位于mllib.regression包中

        李   <李> scala李   
      
     <代码>//首先需要引入标签点相关的类
      进口org.apache.spark.mllib.linalg.Vectors
      进口org.apache.spark.mllib.regression.LabeledPoint//创建一个带有正面标签和稠密特征向量的标签点。
      val pos=LabeledPoint (1.0, Vectors.dense (1.0, 0.0, 3.0))//创建一个带有负面标签和稀疏特征向量的标签点。
      val neg=LabeledPoint(0.0,向量。稀疏(数组(0,2),数组(1.0,3.0))) 
      
        <李> python李   
      ,
     <代码>祝辞的在比;从pyspark.mllib。回归进口LabeledPoint
      在在在从pyspark.mllib。linalg进口向量
      在在在pos=LabeledPoint (1.0, Vectors.dense ((1.0, 2.0, 3.0)))
      在在在neg=LabeledPoint (0.0, Vectors.dense((1.0, 2.0, 3.0)))  
      李   <李>   矩阵

      
        <李>   

      矩阵分为稠密矩阵和稀疏矩阵

        李   <李>   

      稠密矩阵的实体值以列为主要次序的形式,存放于单个双型数组内。系数矩阵的非零实体以列为主要次序的形式,存放于压缩稀疏列(压缩稀疏列,CSC)中,例如,下面这个稠密矩阵就是存放在一维数组(1.0,3.0,5.0,2.0,4.0,6.0)中,矩阵的大小为(3 2)。

        李   <李>   

      本地矩阵的基类是矩阵类,在火花中有其两种实现,分别是DenseMatrix和SparseMatrix。官方文档中推荐使用已在矩阵类中实现的工厂方法来创建本地矩阵。需要注意的是,MLlib中的本地矩阵是列主序的(列为主)

        李   <李>   

      稠密矩阵

        
       <代码>进口org.apache.spark.mllib.linalg。{矩阵,矩阵}//创建稠密矩阵((1.0,2.0),(3.0,4.0),(5.0,6.0))
        val dm:矩阵=Matrices.dense(3 2数组(1.0,3.0,5.0,2.0,4.0,6.0)) 
        李   <李>稀疏矩阵   
       <代码> scala>val sparseMatrix=矩阵。稀疏(3、3、数组(0,2、3、6),数组(0、2、1,0,1,2),数组(1.0,2.0,3.0,4.0,5.0,6.0))
        sparseMatrix: org.apache.spark.mllib.linalg。矩阵=3 x 3 CSCMatrix
        1.0 (0,0)
        2.0 (2,0)
        3.0 (1,1)
        4.0 (0,2)
        5.0 (1、2)
        6.0(2,2) 
        
      李   <李>   

    评级   

        <李>   

      用于产品推荐

        李   <李>   

      表示用户对一个产品的评分

        李   <李>位于mllib.recommendation包中李   
      李   <李>   

    14.火花mllib之快速入门