我对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,我可以实现任何问题的模型。所以任何帮助都会很感激的谢谢
暂无答案!
目前还没有任何答案,快来回答吧!