pyspark 的pyspark.ml.linalg包主要提供了向量相关(矩阵部分不是很常用因此本文不提)的定义以及计算操作
主体包括:
1.Vector
2.DenseVector
3.SparseVector
1.Vector
是下面所有向量类型的父类。我们使用numpy数组进行存储,计算将交给底层的numpy数组。
主要方法:
toArray() 将向量转化为numpy的array
2.DenseVector
创建时,可以使用list、numpy array、等多种方式进行创建
常用方法:
dot() 计算点乘,支持密集向量和numpy array、list、SparseVector、SciPy Sparse相乘
norm() 计算范数
numNonzeros() 计算非零元素个数
squared_distance() 计算两个元素的平方距离
.toArray() 转换为numpy array
values 返回一个list
1 | #密集矩阵的创建 |
3.SparseVector
简单的系数向量类,用于将数据输送给ml模型。
Sparkvector和一般的scipy稀疏向量不太一样,其表示方式为,(数据总维数,该数据第n维存在值列表,各个位置对应的值列表)
常用方法:
dot() SparseVector的点乘不仅可以在SparseVector之间还可以与numpy array相乘
indices 有值的条目对应的索引列表,返回值为numpy array
size 向量维度
norm() 计算范数
numNonzeros() 计算非零元素个数
squared_distance() 计算两个元素的平方距离
.toArray() 转换为numpy array
values 返回一个list
注:加粗部分为SparseVector特有的
1 | #创建稀疏向量 |