gpt4 book ai didi

scala - 如何从 Scala 中的 DataFrame 在 Spark 中创建分布式稀疏矩阵

转载 作者:行者123 更新时间:2023-12-03 18:58:54 27 4
gpt4 key购买 nike



请帮助找到从 DataFrame 中的(用户、特征、值)记录创建分布式矩阵的方法,其中特征及其值存储在列中。

数据摘录如下,但有大量用户和功能,并且没有为用户测试所有功能。因此,许多特征值是空的并且被归为 0。

例如,验血可能有 糖度 , 胆固醇水平 等作为特征。如果这些级别 Not Acceptable ,则将 1 设置为值。但并非所有功能都会为用户(或患者)进行测试。

+----+-------+-----+
|user|feature|value|
+----+-------+-----+
| 14| 0| 1|
| 14| 222| 1|
| 14| 200| 1|
| 22| 0| 1|
| 22| 32| 1|
| 22| 147| 1|
| 22| 279| 1|
| 22| 330| 1|
| 22| 363| 1|
| 22| 162| 1|
| 22| 811| 1|
| 22| 290| 1|
| 22| 335| 1|
| 22| 681| 1|
| 22| 786| 1|
| 22| 789| 1|
| 22| 842| 1|
| 22| 856| 1|
| 22| 881| 1|
+----+-------+-----+


如果特征已经是列,那么有解释的方法。
  • Spark - How to create a sparse matrix from item ratings
  • Calculate Cosine Similarity Spark Dataframe
  • How to convert a DataFrame to a Vector.dense in scala

  • 但这种情况并非如此。因此,一种方法可能是旋转数据框以应用这些方法。
    +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    |user| 0| 32|147|162|200|222|279|290|330|335|363|681|786|789|811|842|856|881|
    +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
    | 14| 1| 0| 0| 0| 1| 1| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0|
    | 22| 1| 1| 1| 1| 0| 0| 1| 1| 1| 1| 1| 1| 1| 1| 1| 1| 1| 1|
    +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

    然后使用行到向量转换。我想使用以下之一:
  • 矢量汇编器
  • org.apache.spark.mllib.linalg.Vectors.fromML
  • org.apache.spark.mllib.linalg.distributed.MatrixEntry

  • 但是,由于将有许多空值被归为 0,因此旋转的数据帧将消耗更多的内存空间。此外,旋转分布在多个节点之间的大型数据帧会导致大量改组。

    因此,寻求意见,想法,建议。

    有关的
  • Spark - How to create a sparse matrix from item ratings
  • Calculate Cosine Similarity Spark Dataframe
  • How to convert a DataFrame to a Vector.dense in scala
  • VectorAssembler
  • Scalable Sparse Matrix Multiplication in Apache Spark
  • Spark MLlib Data Types | Apache Spark Machine Learning
  • Linear Algebra and Distributed Machine Learning in Scala using Breeze and MLlib

  • 环境

    Spark 2.4.4

    最佳答案

    也许您可以将每一行转换为 json 表示,例如:

    { 
    "user": 14
    "features" : [
    {
    "feature" : 0
    "value" : 1
    },
    {
    "feature" : 222
    "value" : 1
    }
    ]
    }

    但一切都取决于您稍后将如何使用“分布式矩阵”。

    关于scala - 如何从 Scala 中的 DataFrame 在 Spark 中创建分布式稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957444/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com