Pyspark机器学习:向量及其常用操作

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]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PySpark是一个用于大规模数据处理和分析的Python库,它提供了机器学习库来构建预测模型。利用PySpark中的机器学习算法,我们可以进行房价预测。以下是一个基本的流程: 1. 数据收集:收集与房价相关的数据集,如房屋面积、地理位置、建造年份等。 2. 数据准备:使用PySpark对数据进行预处理,包括数据清洗、特征选择和转换。这包括处理缺失值、标准化数值特征、对类别特征进行独热编码等。 3. 模型训练:使用PySpark机器学习库,选择适当的回归算法,如线性回归、决策树回归或随机森林等,来训练模型。通过将数据集分为训练集和测试集,评估模型的性能。 4. 模型评估与调优:根据评估指标,如均方根误差(RMSE)或决定系数(R²),评估模型的性能。根据需要,可以尝试不同的算法、调整超参数或进行特征工程以改进模型的性能。 5. 模型应用:当模型训练和调优完成后,可以将其应用于新的数据进行房价预测。使用模型对新的特征数据进行转换,然后使用训练好的模型进行预测。 通过使用PySpark进行房价预测,我们可以充分发挥它处理大规模数据集和并行计算的优点。这使得我们能够更高效地进行特征工程、训练模型和进行预测分析。同时,PySpark还提供了丰富的可视化工具和模型解释功能,使我们能够更好地理解和解释模型的结果。 ### 回答2: Pyspark是一个强大的平台,可以用于大规模数据处理和分析。机器学习是其中一个重要的应用领域之一。房价预测是一个常见的机器学习问题,可以通过Pyspark来实现。 在Pyspark中进行房价预测,首先需要进行数据准备和预处理。这包括数据清洗、特征提取和数据转换等步骤,以确保数据的准确性和一致性。 然后,选择适当的机器学习算法来构建预测模型。常用的算法包括线性回归、决策树、随机森林、梯度提升树等。这些算法可以通过Pyspark机器学习库(MLlib)来实现。 在构建模型之前,需要将数据集分为训练集和测试集,以便评估模型的性能。可以使用Pyspark的数据划分函数来实现。 接下来,使用训练集数据来训练模型。通过调整算法的超参数来进一步优化模型的性能。Pyspark提供了交叉验证和网格搜索等方法来帮助选择最佳的超参数。 在训练完成后,使用测试集数据来评估模型的预测性能。可以使用不同的性能指标,如均方误差(MSE)或平均绝对误差(MAE),来评估模型的准确性。 最后,可以使用训练好的模型来进行新数据的预测。通过提供新房屋的特征数据,可以预测其价格。Pyspark提供了相应的函数来进行预测。 总结来说,Pyspark机器学习可以用来进行房价预测。通过数据准备、模型选择和调优等步骤,可以构建准确可靠的房价预测模型。这些模型可以用于分析市场趋势、辅助房产投资决策等应用场景。 ### 回答3: pyspark是一个在大数据处理环境下运行的Python库,它提供了强大的工具和算法,可以用于机器学习任务,如房价预测。 在使用pyspark进行房价预测时,我们可以遵循以下步骤: 1. 数据准备:收集相关的房价数据,并进行数据清洗和预处理。这包括数据去重、缺失值处理、特征工程等步骤。 2. 特征提取: 选择适合房价预测的特征,如房屋面积、位置、房间数等。可以使用pyspark的特征提取模块来完成,如VectorAssembler。 3. 数据划分: 将数据集划分为训练集和测试集,以便对模型进行训练和评估。可以使用pyspark的数据划分模块进行划分。 4. 选择模型: 在pyspark中,有多个机器学习算法可用于回归问题,如线性回归、决策树回归等。我们可以根据数据集的特点选择适当的模型。 5. 模型训练: 使用训练集对选定的模型进行训练。这可以通过pyspark的模型训练接口来完成。 6. 模型评估: 使用测试集对训练好的模型进行评估,如计算均方根误差(RMSE)等指标。pyspark提供了一系列评估指标的计算方法。 7. 模型优化: 根据评估结果,我们可以对模型进行优化和调整,如调整超参数、增加特征等。 8. 模型应用: 在模型训练和评估完成后,我们可以使用训练好的模型对新的房屋数据进行预测,从而实现房价的预测。 总结来说,pyspark提供了丰富的工具和算法,可以用于机器学习任务,如房价预测。通过数据准备、特征提取、模型选择、训练和评估等步骤,我们可以利用pyspark构建出有效的房价预测模型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值