如何在 Spark 中创建距离矩阵来实现 Kmeans 算法

问题描述

我对 Spark 很陌生,我正在尝试实现 Kmeans 算法,根据名称间的相似性对一组名称进行聚类,但是为了理解模型的预测,我需要一个数据框/我无法单独使用 Spark 重现的矩阵,到目前为止我必须创建一个 Pandas DF 并将其转换为 Spark DF。有人告诉我,对于未来数据集的规模,这不是正确的方法

所以这或多或少是我所拥有的:

我有以下一组名称,这是一个小样本,但我将其用作练习,以了解在使用更大的真实数据集后它的行为

df = spark.createDataFrame(["GERMAN","GERMANY","GERMANIA","LENOVO"],"string").toDF("Name")
df.show()

+--------+
|    Name|
+--------+
|  GERMAN|
| GERMANY|
|GERMANIA|
|  LENOVO|
+--------+

我定义的用于计算每个词之间相似度的UDF是:

lcs_udf = udf(lambda w,v :  1 - metric_lcs.distance(w,v),FloatType())

我正在尝试使用此函数生成一个数据框,该数据框将为我提供每个可能的单词对之间的相似性,它本质上是一个对角矩阵,理想情况下看起来像这样:

+--------+--------+---------+----------+--------+
|    Name| GERMAN | GERMANY | GERMANIA | LENOVO |
+--------+--------+---------+----------+--------+
|  GERMAN|    1   |   ..... |   .....  |  ...   |
| GERMANY|   .... |    1    |    ....  |  ....  | 
|GERMANIA|   .... |   ....  |     1    |  ....  |
|  LENOVO|   .... |    .... |    ....  |    1   |
+--------+--------+---------+----------+--------+

有了这个 DF,我可以在有任何问题的情况下实现模型。所以任何帮助将不胜感激 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)