pySpark Columnsimilarities 的问题

2024-01-17

太长了;博士 如何使用 pySpark 比较行的相似度?

我有一个 numpy 数组,我想在其中比较每一行之间的相似性

print (pdArray)
#[[ 0.  1.  0. ...,  0.  0.  0.]
# [ 0.  0.  3. ...,  0.  0.  0.]
# [ 0.  0.  0. ...,  0.  0.  7.]
# ..., 
# [ 5.  0.  0. ...,  0.  1.  0.]
# [ 0.  6.  0. ...,  0.  0.  3.]
# [ 0.  0.  0. ...,  2.  0.  0.]]

使用 scipy 我可以计算余弦相似度如下......

pyspark.__version__
# '2.2.0'

from sklearn.metrics.pairwise import cosine_similarity
similarities = cosine_similarity(pdArray)

similarities.shape
# (475, 475)

print(similarities)
array([[  1.00000000e+00,   1.52204908e-03,   8.71545594e-02, ...,
          3.97681174e-04,   7.02593036e-04,   9.90472253e-04],
       [  1.52204908e-03,   1.00000000e+00,   3.96760121e-04, ...,
          4.04724413e-03,   3.65324300e-03,   5.63519735e-04],
       [  8.71545594e-02,   3.96760121e-04,   1.00000000e+00, ...,
          2.62367141e-04,   1.87878869e-03,   8.63876439e-06],
       ..., 
       [  3.97681174e-04,   4.04724413e-03,   2.62367141e-04, ...,
          1.00000000e+00,   8.05217639e-01,   2.69724702e-03],
       [  7.02593036e-04,   3.65324300e-03,   1.87878869e-03, ...,
          8.05217639e-01,   1.00000000e+00,   3.00229809e-03],
       [  9.90472253e-04,   5.63519735e-04,   8.63876439e-06, ...,
          2.69724702e-03,   3.00229809e-03,   1.00000000e+00]])

由于我希望扩展到比原始(475 行)矩阵大得多的集合,因此我正在考虑通过 pySpark 使用 Spark

from pyspark.mllib.linalg.distributed import RowMatrix

#load data into spark 
tempSpark =  sc.parallelize(pdArray)
mat = RowMatrix(tempSpark)

# Calculate exact similarities
exact = mat.columnSimilarities()

exact.entries.first()
# MatrixEntry(128, 211, 0.004969676943490767)

# Now when I get the data out I do the following...
# Convert to a RowMatrix.
rowMat = approx.toRowMatrix()
t_3 = rowMat.rows.collect()
a_3 = np.array([(x.toArray()) for x in t_3])
a_3.shape
# (488, 749)

正如您所看到的,数据的形状是a)不再是正方形(它应该是正方形,b)具有与原始行数不匹配的尺寸...现在它确实匹配(部分_每个中的特征数量) row (len(pdArray[0]) = 749) 但我不知道 488 来自哪里

749 的出现让我觉得我需要先转置我的数据。那是对的吗?

最后,如果是这种情况,为什么尺寸不是 (749, 749) ?


首先,columnSimilarities方法仅返回相似度矩阵上三角部分的非对角线条目。由于对角线上没有 1,因此生成的相似度矩阵中的整行可能都是 0。

二、pysparkRowMatrix没有有意义的行索引。所以本质上当从CoordinateMatrix to a RowMatrix, the i值在MatrixEntry被映射到任何方便的地方(可能是一些递增索引)。因此,可能发生的情况是,全为 0 的行将被忽略,并且当您将其转换为矩阵时,矩阵会被垂直压缩。RowMatrix.

在使用以下方法计算后立即检查相似度矩阵的维数可能是有意义的columnSimilarities方法。您可以使用numRows()numCols()方法。

print(exact.numRows(),exact.numCols())

除此之外,听起来您确实需要转置矩阵才能获得正确的向量相似度。此外,如果出于某种原因您需要在RowMatrix-类似的形式,你可以尝试使用IndexedRowMatrix它确实具有有意义的行索引,并且在转换时会保留原始 CoordinateMatrix 中的行索引。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pySpark Columnsimilarities 的问题 的相关文章

随机推荐

  • Flutter:如何循环遍历“DocumentSnapshot.data()”中的每个字段

    I have a collection where each user has their own document In the document I create a map for a new entry The document w
  • 在 AMP HTML 页面上嵌入带标记的地图

    目前 我使用 Google 地图 API 生成带有给定位置标记 给定一组纬度 经度坐标 的地图 在 AMP HTML 中 当前执行此操作的方法似乎是使用 amp iframe 扩展https github com ampproject am
  • http持久连接和ssl会话

    HTTP 是一种应用程序协议 底层的 TCP 连接可以关闭并重新打开 而不会影响 HTTP 应用程序 性能除外 通过使用 HTTP1 1 我们使用持久连接 但服务器或客户端仍然可以随时关闭连接 为了安全起见 HTTP 通过 SSL TLS
  • 函数初始化代码从西雅图更改为东京吗?

    我正在将代码从 Delphi 10 Seattle 升级到 Delphi 10 2 Tokyo 并得到很多 H2077 提示Value assigned to never used关于作业 即使在过去明确添加这些内容以消除 可能没有价值 警
  • 如何打开文件而不将其保存到磁盘

    我的问题 如何打开文件 在文件的系统默认 外部 程序中 而不将文件保存到磁盘 我的情况 我的资源中有文件 我想显示这些文件而不先将它们保存到磁盘 例如 我有一个xml文件 我想在用户机器上的默认程序中打开它进行阅读xml文件而不先将其保存到
  • 如何使 ASP.NET TextBox 在 AJAX UpdatePanel 中触发 onTextChanged 事件?

    我试图让一个文本框在每次击键时触发它的 onTextChanged 事件 而不是仅在失去焦点时触发 我认为添加 AsyncPostBackTrigger 可以做到这一点 但它仍然不起作用 我想做的事情可能吗 代码如下
  • Windows 匿名管道上的非阻塞 io

    我希望在 Windows 匿名管道上进行非阻塞 io 这是一个 NET 项目 因此如果可能的话我计划使用托管类 我看到 NET 确实有 AnonymousPipeServerStream 和 AnonymousPipeClientStrea
  • mixReducer 中使用的减速器的声纳代码气味

    我正在使用combineReducers来组合reducers和reducer 如下所示 const todo state action gt switch action type case TOGGLE TODO if state id
  • Spring Boot 无法使用 Java 配置更改 Thymeleaf 模板目录

    将 Thymeleaf 模板文件放置在默认值中src main resources templates对我来说工作正常 当我想重命名目录时说mytemplates 这是行不通的 我收到找不到模板位置 classpath templates
  • JavaScript:获取图像尺寸

    我只有一个图像的 URL 我需要仅使用 JavaScript 确定该图像的高度和宽度 用户在页面上无法看到该图像 我怎样才能得到它的尺寸 var img new Image img onload function var height im
  • 如何将符号链接文件添加到 gitlab 存储库

    如何将文件的符号链接添加到 gitlab 存储库 每次我从 gitlab 运行管道时 本地符号链接都会被破坏 任何关于如何为 gitlab repo 内部的文件夹创建符号链接的建议都会很棒 您可以在 Git 存储库中存储符号链接 特殊条目
  • CSS3边框半径简写解决方案

    Is this border radius 10px 10px 0 0 一个缩短的版本 适用于所有识别它的浏览器 border top left radius 10px border top right radius 10px 是的 第一种
  • 具有唯一约束的 Postgres 哈希索引

    由于 Postgres 10 正确支持哈希索引 我想使用哈希索引进行 id 查找 与 btree 相比 哈希索引的大小更小 理论上更快 我有一张桌子 create table t id int create unique index on
  • 使用前瞻的 C++ std::regex 失败

    我需要从磁盘解析 txt 文件 所以我首先做了一个例子来测试正则表达式 这是我的示例代码 std string txt paragraph r nthis is the text file r ni need only this data
  • 为我的网站创建“徽章”,存储用户徽章的最佳方式?使用PHP

    我正在向我的网站添加 徽章 我想知道存储数据的最佳方式是什么 每个徽章都有一个存储在 MySQL 数据库中的 ID 每个用户在 MySQL 数据库中都有自己的行 并且每个用户都有一个 XML 格式的 userdata 文件 因此 我可以将其
  • SONAR:将此 lambda 替换为方法引用

    Sonar 告诉我 用方法引用替换这个 lambda public class MyClass private List
  • 如何使用 iText 和 Flying Saucer 在从 HTML 创建的 PDF 中嵌入字体?

    我在将波兰语字体嵌入从 HTML 转换为 PDF 时遇到问题 我的 HTML 代码正文有样式 我尝试了两种将此类 HTML 转换为 PDF 的方法 FOP 与 htmlcleaner 带飞碟的 iText 对于 FOP 我可以将所有使用的字
  • 在iOS swift中查看录音?

    是否有任何库可以记录特定的活动UIView 我遇到了这个库 ASScreenRecorder master 但当我尝试在 swift 中使用它或任何其他方式记录时 它显示出许多错误UIView哪个正在显示一些动画 例如飘落的雪花和图像的幻灯
  • Django 中的值相对于前一个值自动递增

    有没有一种方法可以相对于前一个字段自动递增字段 例如 如果前一个记录的值为 09 0001 那么下一个记录应该分配为 09 0002 等等 想法 我正在考虑重写保存方法 但我不太确定到底如何 Django 不允许您在模型中拥有多个 Auto
  • pySpark Columnsimilarities 的问题

    太长了 博士 如何使用 pySpark 比较行的相似度 我有一个 numpy 数组 我想在其中比较每一行之间的相似性 print pdArray 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 7 5 0 0 0 1 0