Pyspark特征工程--MinHashLSH

这篇具有很好参考价值的文章主要介绍了Pyspark特征工程--MinHashLSH。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MinHashLSH

class pyspark.ml.feature.MinHashLSH(inputCol=None, outputCol=None, seed=None, numHashTables=1)

Jaccard 距离的 LSH 类

输入可以是密集或稀疏向量,但如果是稀疏的,则效率更高。 例如 Vectors.sparse(10, [(2, 1.0), (3, 1.0), (5, 1.0)]) 表示空间中有 10 个元素。 该集合包含元素 2、3 和 5。此外,任何输入向量必须至少有 1 个非零索引,并且所有非零值都被视为二进制“1”值

model.approxNearestNeighbors(dataset, key, numNearestNeighbors, distCol=‘distCol’):

给定一个大数据集和一个项目,大约找到与该项目最近距离的 k 个项目。 如果 outputCol 缺失,该方法将转换数据; 如果 outputCol 存在,它将使用它。 这允许在必要时缓存转换后的数据。

参数 :

dataset - 用于搜索键的最近邻居的数据集。

key – 表示要搜索的项目的特征向量。

numNearestNeighbors – 最近邻居的最大数量。

distCol – 输出列,用于存储每个结果行与键之间的距离。 如果未指定,则使用“distCol”作为默认值。

返回:

一个数据集,最多包含最接近键的 k 个项目。 添加一列“distCol”以显示每行与键之间的距离。

model.approxSimilarityJoin(datasetA, datasetB, threshold, distCol=‘distCol’):

连接两个数据集以近似找到距离小于阈值的所有行对。 如果 outputCol 缺失,该方法将转换数据; 如果 outputCol 存在,它将使用它。 这允许在必要时缓存转换后的数据.

参数:

datasetA – 要加入的数据集之一。

datasetB - 要加入的另一个数据集。

threshold – 行对距离的阈值。

distCol – 用于存储每对行之间距离的输出列。 如果未指定,则使用“distCol”作为默认值。

返回:

一个包含行对的连接数据集。 原始行位于“datasetA”和“datasetB”列中,并添加了“distCol”列以显示每对之间的距离。

01.初始化

from pyspark.sql import SparkSession
spark = SparkSession.builder.config("spark.Driver.host","192.168.1.4")\
    .config("spark.ui.showConsoleProgress","false")\
    .appName("MaxAbsScaler").master("local[*]").getOrCreate()

02.创建数据

from pyspark.ml.linalg import Vectors
from pyspark.sql.functions import col
data = [(0, Vectors.sparse(6, [0, 1, 2], [1.0, 1.0, 1.0]),),
        (1, Vectors.sparse(6, [2, 3, 4], [1.0, 1.0, 1.0]),),
        (2, Vectors.sparse(6, [0, 2, 4], [1.0, 1.0, 1.0]),)]
df = spark.createDataFrame(data, ["id", "features"])
df.show()
df.head(3)

​ 输出结果:

+---+--------------------+
| id|            features|
+---+--------------------+
|  0|(6,[0,1,2],[1.0,1...|
|  1|(6,[2,3,4],[1.0,1...|
|  2|(6,[0,2,4],[1.0,1...|
+---+--------------------+

[Row(id=0, features=SparseVector(6, {0: 1.0, 1: 1.0, 2: 1.0})),
 Row(id=1, features=SparseVector(6, {2: 1.0, 3: 1.0, 4: 1.0})),
 Row(id=2, features=SparseVector(6, {0: 1.0, 2: 1.0, 4: 1.0}))]

03.MinHashLSH转换

from pyspark.ml.feature import MinHashLSH
mh = MinHashLSH(inputCol="features", outputCol="hashes", seed=12345)
model = mh.fit(df)
model.transform(df).show()
model.transform(df).head(3)

​ 输出结果:

+---+--------------------+----------------+
| id|            features|          hashes|
+---+--------------------+----------------+
|  0|(6,[0,1,2],[1.0,1...|[[6.17966841E8]]|
|  1|(6,[2,3,4],[1.0,1...|[[1.33824602E8]]|
|  2|(6,[0,2,4],[1.0,1...|[[9.10790854E8]]|
+---+--------------------+----------------+

[Row(id=0, features=SparseVector(6, {0: 1.0, 1: 1.0, 2: 1.0}), hashes=[DenseVector([617966841.0])]),
 Row(id=1, features=SparseVector(6, {2: 1.0, 3: 1.0, 4: 1.0}), hashes=[DenseVector([133824602.0])]),
 Row(id=2, features=SparseVector(6, {0: 1.0, 2: 1.0, 4: 1.0}), hashes=[DenseVector([910790854.0])])]

04.构造另一个数据

data2 = [(3, Vectors.sparse(6, [1, 3, 5], [1.0, 1.0, 1.0]),),
         (4, Vectors.sparse(6, [2, 3, 5], [1.0, 1.0, 1.0]),),
         (5, Vectors.sparse(6, [1, 2, 4], [1.0, 1.0, 1.0]),)]
df2 = spark.createDataFrame(data2, ["id", "features"])
df2.show()

​ 输出结果:

+---+--------------------+
| id|            features|
+---+--------------------+
|  3|(6,[1,3,5],[1.0,1...|
|  4|(6,[2,3,5],[1.0,1...|
|  5|(6,[1,2,4],[1.0,1...|
+---+--------------------+

05.查看approxNearestNeighbors属性

key = Vectors.sparse(6, [1, 2], [1.0, 1.0])
model.approxNearestNeighbors(df2, key, 1).show()

​ 输出结果:

+---+--------------------+----------------+-------------------+
| id|            features|          hashes|            distCol|
+---+--------------------+----------------+-------------------+
|  5|(6,[1,2,4],[1.0,1...|[[6.17966841E8]]|0.33333333333333337|
+---+--------------------+----------------+-------------------+

06.查看approxSimilarityJoin结果

model.approxSimilarityJoin(df, df2, 0.6, distCol="JaccardDistance").select(
    col("datasetA.id").alias("idA"),
    col("datasetB.id").alias("idB"),
    col("JaccardDistance")).show()

​ 输出结果:文章来源地址https://www.toymoban.com/news/detail-659905.html

+---+---+---------------+
|idA|idB|JaccardDistance|
+---+---+---------------+
|  0|  5|            0.5|
|  1|  4|            0.5|
+---+---+---------------+

到了这里,关于Pyspark特征工程--MinHashLSH的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每个 AI/ML 工程师都应该知道的 Gen AI 框架和工具!

    在快速发展的技术领域,生成式人工智能是一股革命性的力量,它改变了开发人员和AI/ML工程师处理复杂问题和创新的方式。本文深入探讨了生成式 AI 的世界,揭示了对每个开发人员都至关重要的框架和工具。 LangChain 由 Harrison Chase 开发并于 2022 年 10 月首次亮相,是一个开

    2024年01月22日
    浏览(49)
  • 神经网络基础-神经网络补充概念-55-为什么是ML策略

    “ML策略”(Machine Learning Strategies)是指在解决机器学习问题时,采取的一系列方法、技巧和策略。选择适当的ML策略对于获得高质量的模型和结果非常重要。以下是为什么要考虑ML策略的一些原因: 问题适应性:不同的机器学习问题可能需要不同的策略。ML策略允许您根据问

    2024年02月11日
    浏览(37)
  • 深度学习笔记(四)——使用TF2构建基础网络的常用函数+简单ML分类实现

    文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 1、张量处理类 强制数据类型转换: 查找数据中的最小值和最大值: 上一行例子中是对整个张量查找,也按照一定的方向查找

    2024年01月16日
    浏览(42)
  • 【ML】分类问题

    classification :根据已知样本特征,判断输入样本属于哪种已知样本类。 常用入门案例:垃圾邮件检测、图像分类、手写数字识别、考试通过预测。 分类问题和回归问题的明显区别: 分类问题的结果是非连续型标签,回归输出结果是连续型数值。

    2024年02月05日
    浏览(36)
  • 「ML 实践篇」模型训练

    在训练不同机器学习算法模型时,遇到的各类训练算法大多对用户都是一个黑匣子,而理解它们实际怎么工作,对用户是很有帮助的; 快速定位到合适的模型与正确的训练算法,找到一套适当的超参数等; 更高效的执行错误调试、错误分析等; 有助于理解、构建和训练神经

    2023年04月16日
    浏览(50)
  • ML:2-2-1 Tensorflow

    【吴恩达p60-61】 继续看手写数字识别的例题 第一步,我们上周学习了。 第二步,让Tensorflow去编译模型。最重要的一步是通过指定你想使用的loss函数。(这里我们会用BinaryCrossentropy) 第三步,使用fit函数告诉Tensorflow将在第一步中指定的model,和第二步中指定的cost function拟合

    2024年01月18日
    浏览(25)
  • ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略

    ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略 目录 利用LLMs赋能或者结合ML算法进行具体应用的简介

    2024年02月09日
    浏览(46)
  • ML Visuals-神经网络画图神器

    这里向大家推荐一个深度学习领域许多SCI作者都在使用的画图神器: ML Visuals 该项目受到广泛关注,迄今已收获 7.2K Star,专为解决神经网络画图问题设计! 项目地址:dair-ai/ml-visuals: 🎨 ML Visuals contains figures and templates which you can reuse and customize to improve your scientific writing. (git

    2023年04月08日
    浏览(31)
  • 【ML】了解 LightGBM 参数(以及如何调整)

    我已经使用lightGBM一段时间了。这是我解决大多数结构化数据问题的首选算法。令人敬畏的功能列表很长,如果您还没有,我建议您看一下。 但我一直很想了解哪些参数对性能影响最大,以及我应该如何调整 lightGBM 参数以充分利用它。 我想我应该做一些研究,更多地了解

    2024年02月05日
    浏览(34)
  • 因果推断4--Causal ML(个人笔记)

    目录 1 安装教程及官方文档 1.1 pip安装 1.2 API文档 1.3 代码仓库 2 Uplift模型与主要方法介绍 2.1 发放代金券 2.2 多treatment 2.3 实验方法 3 causalml.inference.tree module 3.1 UpliftTreeClassifier 3.2 UpliftRandomForestClassifier 3.3 CausalRandomForestRegressor 4 待补充 5 问题 pip install causalml https://causalml.r

    2024年02月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包