如何解决替代旋转列以在 pyspark
我正在尝试在 pyspark 中使用 kmeans 进行聚类。我有类似下面的 id_predictions_df 示例的数据。我首先旋转数据以创建一个数据框,其中列是 id_y 索引,行是 id_x。这些值就是 adj_prob。每行只有一个条目,所以 '.agg({'adj_prob':'max'})' 只是为了让枢轴工作。枢轴步骤非常缓慢,聚类实际上运行得非常快。有没有比枢轴步骤更快的替代方法?旋转似乎没有必要,因为我将在下一步将其转换为向量。
代码:
pivot_df = id_predictions_df.groupBy('id_x').pivot('id_y').agg({'adj_prob':'max'})
from pyspark.ml.clustering import KMeans
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import VectorAssembler
feat_cols = [x for x in pivot_df2.columns if x!='id_x']
vec_assembler = VectorAssembler(inputCols = feat_cols,outputCol='features')
final_data = vec_assembler.transform(pivot_df2)
kmeans3 = KMeans(featuresCol='features',k=200)
model_k3 = kmeans3.fit(final_data)
cluster_label_df=model_k3.transform(final_data)
数据:
id_predictions_df.show(truncate=False)
+-----+-------+--------+
|id_x |id_y |adj_prob|
+-----+-------+--------+
|388 |185750 |0.0 |
|8465 |15826 |0.0 |
|8712 |520418 |0.0 |
|11139|400617 |0.0 |
|12999|42364 |0.0 |
|13382|14100 |0.0 |
|15479|1075409|0.0 |
|15582|721538 |0.0 |
|16162|103031 |0.0 |
|17418|1129613|0.0 |
|18183|490223 |0.0 |
|20730|208942 |0.0 |
|23773|625286 |0.0 |
|26148|258915 |0.0 |
|29685|995242 |0.0 |
|29786|753786 |0.0 |
|30336|411385 |0.0 |
|32624|1290430|0.0 |
|33217|1194822|0.0 |
|34730|1006203|0.0 |
+-----+-------+--------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。