代码杂谈 之 pyspark如何做相似度计算

在 PySpark 中,计算 DataFrame 两列向量的差可以通过使用 UDF(用户自定义函数)和 Vector 类型完成。这里有一个示例,展示了如何使用 PySpark 的

  • pyspark.ml.linalg.Vectors
  • pyspark.sql.functions.udf

来实现这一功能:

首先,确保你已经安装了 PySpark 并且正确设置了 SparkSession。接下来,你可以按照以下步骤操作:

  1. 导入必要的模块。
  2. 创建一个简单的 DataFrame 示例,其中包含两列向量。
  3. 定义一个计算向量差的函数。
  4. 将此函数转换为 UDF。
  5. 使用 UDF 在 DataFrame 上添加一列来存储向量差。
from pyspark.sql import SparkSession
from pyspark.sql.functions import udf
from pyspark.sql.types import ArrayType, FloatType
from pyspark.ml.linalg import Vectors

# 创建 SparkSession
spark = SparkSession.builder \
    .appName("Vector Difference in PySpark") \
    .getOrCreate()

# 创建示例 DataFrame
data = [(Vectors.dense([1.0, 2.0]), Vectors.dense([4.0, 6.0])),
        (Vectors.dense([2.0, 3.0]), Vectors.dense([5.0, 7.0]))]
df = spark.createDataFrame(data, ["vectorA", "vectorB"])

# 定义计算向量差的函数(余弦距离/欧几里得距离)
def cos_sim(a,b):
    return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))

def euclidean_distance(v1, v2):
    return float(np.linalg.norm(np.array(v1) - np.array(v2)))

cos_sim_udf = F.udf(cos_sim,FloatType())

# 在 DataFrame 上使用 UDF 添加新列
tmp_df = tmp_df.withColumn("cos_sim", cos_sim_udf('vectorA','vectorB'))
# 打印结果
df.show()

相关推荐

  1. 代码杂谈 pyspark如何相似计算

    2024-06-09 02:50:06       12 阅读
  2. 数据的相似计算

    2024-06-09 02:50:06       35 阅读
  3. pyspark统计指标计算

    2024-06-09 02:50:06       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 02:50:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 02:50:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 02:50:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 02:50:06       18 阅读

热门阅读

  1. B3928 [GESP202312 四级] 田忌赛马

    2024-06-09 02:50:06       8 阅读
  2. 发布处理方案 —— 前台项目构建与发布处理

    2024-06-09 02:50:06       9 阅读
  3. Tomcat 启动闪退问题解决方法

    2024-06-09 02:50:06       6 阅读
  4. Linux统计目录和文件数目

    2024-06-09 02:50:06       7 阅读
  5. 华为OD技术面试-最小异或-2024手撕代码真题

    2024-06-09 02:50:06       10 阅读
  6. Go理论-面试题

    2024-06-09 02:50:06       7 阅读
  7. 【LC刷题】DAY02:24 19 142

    2024-06-09 02:50:06       6 阅读
  8. 二叉树的前序便利,中序遍历,后序遍历

    2024-06-09 02:50:06       9 阅读
  9. AI学习指南机器学习篇-决策树基本原理

    2024-06-09 02:50:06       9 阅读
  10. 利用Pandas进行数据清洗与过滤:Python实战指南

    2024-06-09 02:50:06       9 阅读
  11. 树莓派【Raspberry Pi-64位】3b+,Pi4J 2.0入门

    2024-06-09 02:50:06       9 阅读
  12. Vue3相关语法内容,组件传值

    2024-06-09 02:50:06       7 阅读