如何在spark中创建距离矩阵来实现kmeans算法

zy1mlcev  于 2021-07-09  发布在  Spark
关注(0)|答案(0)|浏览(180)

我对spark很陌生,我正在尝试实现一个kmeans算法,根据彼此之间的相似性对一组名称进行聚类,但是为了理解模型的预测,我需要一个Dataframe/矩阵,我无法单独使用spark来重现它,到目前为止,我必须创建一个Pandasdf,并将其转换为Sparkdf。我被告知,对于未来数据集的规模来说,这是不可能的´这不是正确的方法。
所以这里或多或少是我所拥有的:
我有以下一组名称,这是一个小样本,但我用它作为练习,看看它的行为,一旦我使用真正的数据集,这是更大的

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

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

我定义的用于计算每个单词之间相似性的自定义项是:

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

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

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

有了这个df,我可以实现任何问题的模型。所以任何帮助都会很感激的谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题