当前位置:网站首页>Pyspark机器学习:向量及其常用操作
Pyspark机器学习:向量及其常用操作
2022-08-01 04:11:00 【Sun_Sherry】
Spark版本:V3.2.1
本篇主要介绍pyspark.ml.linalg中的向量操作。
1. DenseVector(稠密向量)
1.1 创建
稠密向量和一般的数组差不多,其创建方法如下:
from pyspark.ml import linalg
import numpy as np
dvect1=linalg.Vectors.dense([1,2,3,4,5])
dvect2=linalg.Vectors.dense(1.2,3,3,4,5)
print(dvect1)
print(dvect2)
其结果如下(注意其数据类型为float型):
1.2 常用操作
- 对两个长度相同的向量可以进行加减乘除操作。具体如下:
res1=dvect1+dvect2
res2=dvect1-dvect2
res3=dvect1*dvect2
res4=dvect1/dvect2
print(res1)
print(res2)
print(res3)
print(res4)
其结果如下:
- 可以使用numpy.darray中的一些属性
dvec1_shape=dvect1.array.shape
dvec1_size=dvect1.array.size
print(dvec1_shape)# 其结果为:(5,)
print(dvec1_size)# 其结果为:5
- dot点乘操作
res_1=dvect1.dot([1,2,3,4,5])
res_2=dvect1.dot([0,1,0,0,0])
res_3=dvect1.dot(dvect2)
print(res_1) #结果为55
print(res_2) #结果为2
print(res_3) #结果为57.2
- 求向量的范式
dvect1=linalg.Vectors.dense([1,2,3,4,5])
norm_0=dvect1.norm(0)
norm_1=dvect1.norm(1)
norm_2=dvect2.norm(2)
print('dvect1的L0范式为:{}'.format(norm_0))
print('dvect1的L1范式为:{}'.format(norm_1))
print('dvect1的L2范式为:{:.3f}'.format(norm_2))
其结果如下:
- numNonZeros()统计非0元素的个数
dvect1=linalg.Vectors.dense([1,0,3,0,5])
num_nonzero=dvect1.numNonzeros()
print(num_nonzero)#其结果为3
- squared_distance()求两个维度相同的向量的平方距离
dvect1=linalg.Vectors.dense([1,0,3])
dvect2=linalg.Vectors.dense([1,1,1])
dist=dvect1.squared_distance(dvect2) #其值为5
- 取出向量的值
dvect1=linalg.Vectors.dense([1,0,3])
print(dvect1.toArray())
print(dvect1.values)
2. SparseVector(稀疏向量)
2.1 创建
稀疏向量的创建主要有以下几种方式:
- Vectors.sparse(向量长度, 索引数组,与索引数组所对应的数值数组),其中索引从0开始编号,下同;
- Vectors.sparse(向量长度, {索引:数值,索引:数值, … \dots …})
- Vectors.sparse(向量长度,[(索引,数值),(索引,数值), … \dots …])
举例如下:
svect1=linalg.Vectors.sparse(3,[0,1],[3.4,4.5])
svect2=linalg.Vectors.sparse(3,{
0:3.4,2:4.5})
svect3=linalg.Vectors.sparse(4,[(2,3),(3,2.3)])
2.2 常用操作
稀疏变量中一些操作与稠密向量的操作一致,不再赘述。这里只介绍以下两个操作:
- toArray显示稀疏变量的所有数值
svect1=linalg.Vectors.sparse(3,[0,1],[3.4,4.5])
svect2=linalg.Vectors.sparse(3,{
0:3.4,2:4.5})
svect3=linalg.Vectors.sparse(4,[(2,3),(3,2.3)])
print(svect1.toArray())
print(svect2.toArray())
print(svect3.toArray())
其结果如下:
- indices()返回稀疏向量中非0元素的索引值
svect1=linalg.Vectors.sparse(3,[0,1],[3.4,4.5])
svect2=linalg.Vectors.sparse(3,{
0:3.4,2:4.5})
svect3=linalg.Vectors.sparse(4,[(2,3),(3,2.3)])
print(svect1.indices) #返回[0 1](array类型,下同)
print(svect2.indices) #返回[0 2]
print(svect3.indices) #返回[2 3]
边栏推荐
- Passive anti-islanding-UVP/OVP and UFP/OFP passive anti-islanding model simulation based on simulink
- PMP 项目质量管理
- [Getting Started Tutorial] Rollup Module Packager Integration
- MySQL3
- Game Theory (Depu) and Sun Tzu's Art of War (42/100)
- Difference Between Compiled and Interpreted Languages
- Valentine's Day Romantic 3D Photo Wall [with source code]
- [SemiDrive source code analysis] series article link summary (full)
- 阿叶的目标
- This article takes you to understand the past and present of Mimir, Grafana's latest open source project
猜你喜欢
FFmpeg 搭建本地屏幕录制环境
Make your Lottie support word wrapping in text fields
HCIP (14)
Input input box cursor automatically jumps to the last bug after the previous input
Weekly Summary (*67): Why not dare to express an opinion
Mysql基础篇(约束)
win10 fixed local IP
数组问题之《两数之和》以及《三数之和 》
软件测试周刊(第82期):其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。
[Message Notification] How about using the official account template message?
随机推荐
[uniCloud] Application and Improvement of Cloud Objects
【云原生之kubernetes实战】kubernetes集群的检测工具——popeye
开源项目站点必备&交流区功能
时时刻刻保持敬畏之心
怀念故乡的月亮
MySQL4
Mysql基础篇(Mysql数据类型)
MySQL3
JS new fun(); 类与实例 JS基于对象语言 只能通过书写构造函数充当类
C# | 使用Json序列化对象时忽略只读的属性
今日睡眠质量记录68分
移动端页面秒开优化总结
The fledgling Xiao Li's 113th blog project notes: Wisdom cloud smart flower watering device combat (2) - basic Demo implementation
【uniCloud】云对象的应用与提升
New York University et al | TM-Vec: Template Modeling Vectors for Rapid Homology Detection and Alignment
Which interpolation is better for opencv to zoom in and out??
"Youth Pie 2": The new boyfriend stepped on two boats, and the relationship between Lin Miaomiao and Qian Sanyi warmed up
软件测试周刊(第82期):其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。
Basic Theoretical Knowledge of Software Testing - Use Cases
win10 固定本机IP