Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API

Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API

关键词:Local vector,Labeled point,Local matrix,Distributed matrix,RowMatrix,IndexedRowMatrix,CoordinateMatrix,BlockMatrix。
前言:MLlib支持本地向量和存储在单机上的矩阵,当然也支持被存储为RDD的分布式矩阵。一个有监督的机器学习的例子在MLlib里面叫做标签点。

1. 本地向量

一个本地向量是由整数类型和从0开始的索引存储在单机上
。MLlib支持两种本地向量,稠密向量和稀疏向量。稠密向量由一个浮点数组表示它的的所有值,而一个稀疏矩阵由两个平行的数组组成,索引和值。举个例子,一个向量,(1.0,0.0,3.0)能个用稠密表现为[1.0,0.0,3.0] 或者以稀疏的形式表现为(3,[0,2],[1.0,3.0]),3是这个向量的大小。(本人注解:3为长度,即是元素个数,[0,2]为索引,[1.0,3.0],为值)

1.1MLlib认为如下数据类型是稠密向量:
~NumPys array
~Python list

1.2MLlib认为如下数据类型是稀疏向量:
~MLlib’s SparseVector.
~SciPy’s csc_matrix with a single colum

为了效率,我们推荐使用Numpy arrays ,并使用工厂方法继承Vectors 来创建稀疏矩阵。

import numpy as np
import scipy.sparse as sps
from pyspark.mllib.linalg import Vectors

# Use a NumPy array as a dense vector.
dv1 = np.array([1.0, 0.0, 3.0])
# Use a Python list as a dense vector.
dv2 = [1.0, 0.0, 3.0]
# Create a SparseVector.
sv1 = Vectors.sparse(3, [0, 2], [1.0, 3.0])
# Use a single-column SciPy csc_matrix as a sparse vector.
sv2 = sps.csc_matrix((np.array([1.0, 3.0]), np.array([0, 2]), np.array([0, 2])), shape = (3, 1))

2.标签点

标签点可以是一个本地的向量,可以是稀疏的也可以是稠密的,总之他们是带有标签的。在MLlib中,标签点用来进行有监督的学习算法。我们使用双精度数来存储一个标签,这样我们既可以用标签点做分类,也可以用来做回归了。对于二分法,一个标签应该不是0就是1。对于多种分类,标签应该是索引从0,1,2,3….

一个标签点用LabelPoint来表示。

from pyspark.mllib.linalg import SparseVector
from pyspark.mllib.regression import LabeledPoint

# Create a labeled point with a positive label and a dense feature vector.
pos = LabeledPoint(
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值