Machine Learning on Spark--Data Type

1. Local vector 本地向量

本地向量拥有长整型的integer-based,基于0指标的0-based,双精度double的值,存储在一台单独的本地机器上。MLlib支持两种类型的局部变量:稠密的dense和稀疏的sparse。

1.1 dense vector稠密向量

稠密向量是由双精度的数组支持,比如,(1.0,0.0,3.0),稠密向量显示为[1.0,0.0,3.0]

//导入向量包
import org.apache.spark.mllib.linalg.{Vector, Vectors}

// 创建一个稠密向量(1.0, 0.0, 3.0).
val dv: Vector = Vectors.dense(1.0, 0.0, 3.0)

//打印稠密变量的第3个值
println(dv(2))   

1.2 sparse vector稀疏向量

稀疏变量是由两个平行的数组支持:由指标indices与值value组成.
比如,向量(1.0,0.0,3.0),稀疏向量表示为[3,[0,2],[1.0,3.0]]。3为向量的大小,[0,2]为向量的下标,[1.0,3.0]为向量的值。这表示下标为0的向量值为1,下标为2的向量值为3,没有表示出来的是下标为1的向量,默认为0.

另一种创建稀疏向量方法是(3, Seq((0, 1.0), (2, 3.0))),3仍然表示向量的大小,Seq((0, 1.0), (2, 3.0))中(0, 1.0)表示下标为0的向量值为1.0,(2, 3.0)表示下标为2的向量(第三个向量)的值为3.

稀疏向量往往应用于某个值出现较多的时候。

//导入向量包
import org.apache.spark.mllib.linalg.{Vector, Vectors}

//创建一个稀疏向量 (1.0, 0.0, 3.0) 方式一:采用数组方式
val sv1: Vector = Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0))

// 创建一个稀疏向量 (1.0, 0.0, 3.0) 方式二:采用序列方式
val sv2: Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0)))

//打印稀疏变量的第3个值
println(sv1(2))

注:Scala imports scala.collection.immutable.Vector by default, so you have to import org.apache.spark.mllib.linalg.Vector explicitly to use MLlib’s Vector.
scala会默认输入不可变向量的包,所以在建立MLlib的向量之前要先输入rg.apache.spark.mllib.linalg.Vector包

2. Labled Point 标签向量

labled point相当于预测中的目标变量或应变量,在training中是给出样本的目标值,在test中是需要被预测的目标值。
labled point也是一个本地向量,常被适用于监督学习算法中。我们用双精度类型去存储label,所以labeled point可以被用于回归(连续型变量)和分类(类别型变量)中。对于二元分类,label可以是0(负)或是1(正);对于多元分类,label需是从0开始的一串类别指标(0,1,2…)

//导入包:可变向量包&#x
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值