MLlib-Basics (I)

  MLlib-Basics

1 Local vector 本地向量

       一个本地向量可以是integer型和double型的值,存储在单机上。MLlib支持两种类型的本地向量即dense和sparse型。两者之从表达形式上不同,例如:

一个向量(1.0,0.0,3.0) in dense format [1.0,0.0,3.0] ,in sparse format (3,[0,2][1.0,3.0]),其中3是这个向量的大小。

scala> import org.apache.spark.mllib.linalg.{Vector,Vectors}
import org.apache.spark.mllib.linalg.{Vector, Vectors}

// Create a dense vector (1.0, 0.0, 3.0).
scala> val dv:Vector=Vectors.dense(1.0,0.0,3.0)
dv: org.apache.spark.mllib.linalg.Vector = [1.0,0.0,3.0]
// Create a sparse vector (1.0, 0.0, 3.0) by specifying its indices and values corresponding to nonzero entries.
scala> val sv1:Vector=Vectors.sparse(3,Array(0,2),Array(1.0,3.0))
sv1: org.apache.spark.mllib.linalg.Vector = (3,[(0,1.0),(2,3.0)])
// Create a sparse vector (1.0, 0.0, 3.0) by specifying its nonzero entries.
scala> val sv2:Vector=Vectors.sparse(3,Seq((0,1.0),(2,3.0)))
sv2: org.apache.spark.mllib.linalg.Vector = (3,[(0,1.0),(2,3.0)])

 注释:

 scala会自动importsscala.collection.immutable.Vector,所以你必须显示的importorg.apache.spark.mllib.linalg.Vector

2 Labeled point 标记点

      一个标记点就是一个带有标签或者反应的本地向量,可以是dense也可以是sparse,在MLlib,标记点经常在监督性学习算法中使用,我们用double来存一个标记,所以

我们可以在回归和分类中用标记的点。例如,在二分法中,标记应该是0(负)或者1(正);在多类的分类中,标记应该从0开始,0,1,2,.....    

scala> import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.linalg.Vectors

scala> import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.regression.LabeledPoint

// Create a labeled point with a positive label and a dense feature vector.
scala> val pos=LabeledPoint(1.0,Vectors.dense(1.0,0.0,3.0))
pos: org.apache.spark.mllib.regression.LabeledPoint = LabeledPoint(1.0, [1.0,0.0,3.0])
// Create a labeled point with a negative label and a sparse feature vector.
scala> val neg=LabeledPoint(0.0,Vectors.sparse(3,Array(0,2),Array(1.0,3.0)))
neg: org.apache.spark.mllib.regression.LabeledPoint = LabeledPoint(0.0, (3,[(0,1.0),(2,3.0)]))

   
Sparse data 稀疏数据

     现实中我们经常用到稀疏的训练数据。MLlib支持读取以LIBSVM格式的训练例子。这些数据缺省情况下是LIBSVM ,LIBLINEAR格式。如果是text格式,则每一行代表一个

标记的稀疏特征向量,以一下格式:

label index1:value1 index2:value2 ...

例子:
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.rdd.RDD

val training: RDD[LabeledPoint] = MLUtils.loadLibSVMFile(sc, "mllib/data/sample_svm_data.txt") //出错,好像是文件split两个



                                     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值