计算余弦相似度 Spark Dataframe

2024-04-07

我正在使用 Spark Scala 来计算 Dataframe 行之间的余弦相似度。

数据帧格式如下

root
    |-- SKU: double (nullable = true)
    |-- Features: vector (nullable = true)

下面的数据框示例

    +-------+--------------------+
    |    SKU|            Features|
    +-------+--------------------+
    | 9970.0|[4.7143,0.0,5.785...|
    |19676.0|[5.5,0.0,6.4286,4...|
    | 3296.0|[4.7143,1.4286,6....|
    |13658.0|[6.2857,0.7143,4....|
    |    1.0|[4.2308,0.7692,5....|
    |  513.0|[3.0,0.0,4.9091,5...|
    | 3753.0|[5.9231,0.0,4.846...|
    |14967.0|[4.5833,0.8333,5....|
    | 2803.0|[4.2308,0.0,4.846...|
    |11879.0|[3.1429,0.0,4.5,4...|
    +-------+--------------------+

我尝试转置矩阵并检查以下提到的链接。Apache Spark Python DataFrame 上的余弦相似度 https://stackoverflow.com/questions/43921636/apache-spark-python-cosine-similarity-over-dataframes, 使用 tf-idf 将文本特征化为向量来计算余弦相似度 https://stackoverflow.com/questions/32645231/calculating-cosine-similarity-by-featurizing-the-text-into-vector-using-tf-idf但我相信有更好的解决方案

我尝试了下面的示例代码

val irm = new IndexedRowMatrix(inClusters.rdd.map {
  case (v,i:Vector) => IndexedRow(v, i)


}).toCoordinateMatrix.transpose.toRowMatrix.columnSimilarities

但我收到以下错误

Error:(80, 12) constructor cannot be instantiated to expected type;
 found   : (T1, T2)
 required: org.apache.spark.sql.Row
      case (v,i:Vector) => IndexedRow(v, i)

我检查了以下链接Apache Spark:如何从 DataFrame 创建矩阵? https://stackoverflow.com/questions/31567989/apache-spark-how-to-create-a-matrix-from-a-dataframe但无法使用 Scala 做到这一点


  • DataFrame.rdd回报RDD[Row] not RDD[(T, U)]。你必须模式匹配Row或者直接提取感兴趣的部分。
  • ml Vector与...一起使用Datasets因为 Spark 2.0 与mllib Vector由旧 API 使用。你必须将它转换为使用IndexedRowMatrix.
  • 索引必须是Long不是字符串。
import org.apache.spark.sql.Row

val irm = new IndexedRowMatrix(inClusters.rdd.map {
  Row(_, v: org.apache.spark.ml.linalg.Vector) => 
    org.apache.spark.mllib.linalg.Vectors.fromML(v)
}.zipWithIndex.map { case (v, i) => IndexedRow(i, v) })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算余弦相似度 Spark Dataframe 的相关文章

随机推荐

  • 使用 EaselJS 的无限画布

    有没有办法用 EaselJS 显示无限画布 我已经阅读了使用 Javascript 或 JQuery 执行此操作的方法 但是有什么方法可以使用 EaselJS 进行管理吗 Thanks 您可以使用 JavaScript jQuery 拖放画
  • Meteor 登录服务未配置

    我正在使用 Meteor loginWithFacebook 来让用户访问我的应用程序 代码是 Meteor loginWithFacebook loginStyle redirect function err if err throw e
  • 简单的倒计时器打字稿

    我的构造函数中有以下代码 constructor for let i 0 i lt 90 i setTimeout gt this counter this counter 1 1000 我真正想要的是显示一个倒计时 90 秒的数字 现在它
  • 如何在 UML 活动图上显示异步操作

    我即将绘制 记录一些客户端 服务器连接建立代码 以更好地理解它 有几个操作是在单独的线程中异步完成的 连接线程 数据接收线程等 我应该在单独的图表上显示它们吗 我更愿意将其放在单个图表上以掌握整体视图 但不知道如何在活动图上表示它 我不确定
  • 如何将本地 html 文件加载到 NativeScript webview 中

    我修改了 webpack config js 以添加一个名为 index html 的本地文件 代码如下 new CopyWebpackPlugin from glob index html from glob fonts from glo
  • AWS Cognito 托管 UI 在 URL 中返回 id_token

    我正在使用 AWS Cognito 的托管 UI 进行用户登录 id 令牌作为 URL 的一部分返回 如中所述https docs aws amazon com cognito latest developerguide cognito u
  • 实体框架中添加的多个实体可能具有相同的主键

    我正在使用 EF 4 0 的项目中工作 The Employee表有一列ReferEmployeeID其中包含在系统中引用新员工的员工的员工 ID 所以Employee是一个自引用表 现在 如果一个未添加到系统中的员工要添加 并且他还引用了
  • 如何抑制命令的错误消息?

    如何抑制 shell 命令的错误消息 例如 如果只有jpg目录中的文件 正在运行ls zip给出错误消息 ls zip ls cannot access zip No such file or directory 是否有一个选项可以抑制此类
  • 根据另一个列表从列表中过滤元素[重复]

    这个问题在这里已经有答案了 我想在Java 8 我有一个Boolean清单和另一个Object列表 这两个列表的大小始终相同 我想从中删除所有元素object列表 其中有false在相应的索引处boolean list 我将尝试用一个例子来
  • WPF datagrid 选定行单击事件?

    我想在双击 WPF DataGrid 的选定行时执行一些代码 我知道数据网格有一个 MouseDoubleClicked 事件 并且它还有一个行选定事件 但我没有看到任何 选定行双击 事件 您认为有可能以某种方式捕捉到这一事件吗 您可以在中
  • ModuleNotFoundError:没有名为“MySQLdb”的模块

    在完成我的一个 Flask 项目后 我像其他人一样将其上传到 github 上 2 3 个月后 我将整个 githube 存储库下载到另一台机器上来运行它 但是 该应用程序无法运行 因为找不到软件包 并显示以下消息 ModuleNotFou
  • 未找到 Hadoop 命令

    我已经在 Linux 机器上安装并配置了 hadoop 现在我正在尝试运行示例 MR 作业 我已经通过命令 usr local hadoop bin start all sh 启动了 hadoop 输出为 namenode running
  • 如何使用 c# excel interop 读取 excel 自定义文档属性

    我正在尝试检查是否已为 Excel 文件设置自定义文档属性 如果设置了则读取该值 这是我正在使用的代码 但到目前为止还没有运气 它不会进入 foreach 循环并出来 var propval ReadDocumentProperty Tes
  • OpenGL:重复使用具有不同参数的相同纹理

    在我的程序中 我有一个纹理 它在不同情况下使用多次 在每种情况下 我都需要应用一组特定的参数 我想避免创建额外的缓冲区 并在每次需要将其用于其他用途时实质上创建纹理的副本 所以我想知道是否有更好的方法 这是什么采样器对象 http www
  • 对“respond_to”与“respond_to”感到困惑吗?

    我正在通过railstutorial org学习Rails 但我对一些事情感到困惑 在本章 http ruby railstutorial org chapters modeling and viewing users two sec pa
  • 使用 cron 表达式流口水规则?

    我有一个要求 我只想在工作日触发规则 我有一些规则 如烟雾 温度 运动 您能否建议我如何根据我的要求制定规则 请给我一些示例 除了 cron 之外 还有其他更好的方法来根据时间触发规则吗 您可以在工作日或周末解雇规则 我也遇到过同样的要求
  • Internet Explorer 11 自动换行不起作用

    似乎自动换行不再适用于 IE 11 中的 textarea 元素 在 IE 10 及更早版本中 FF Safari 和 Chrome 自动换行按预期工作 IE 11 没有实现任何自动换行 我尝试将 wrap hard 添加到textarea
  • 如何检查节点到其后代叶子的所有路径的黑色高度?

    Given a 红黑树 我需要写一个高效算法检查对于每个节点 从该节点到后代叶子的所有路径是否包含相同数量的黑色节点 即如果属性为 true 或 false 则算法应返回布尔值 它将返回 RB 树的黑色高度 如果高度为0 则该树是无效的红黑
  • UIButton 的自定义字体标题

    有没有办法为按钮标题添加自定义字体 The UIButton类暴露了一个标题标签 http developer apple com library ios documentation UIKit Reference UIButton Cla
  • 计算余弦相似度 Spark Dataframe

    我正在使用 Spark Scala 来计算 Dataframe 行之间的余弦相似度 数据帧格式如下 root SKU double nullable true Features vector nullable true 下面的数据框示例 S