pyspark.ml.stat.Summarizer能否返回稀疏向量结果?

2024-06-07 11:03:10 发布

您现在位置:Python中文网/ 问答频道 /正文

使用pyspark.ml.stat.Summarizer计算稀疏向量的聚合将返回密集向量结果-有没有办法强制执行稀疏向量操作

(仅仅转换结果不是一个好的解决方案,因为中间结果将浪费大量资源)

要复制的代码:

import pyspark
from pyspark.sql.functions import col
from pyspark.ml.stat import Summarizer
from pyspark.ml.linalg import SparseVector, DenseVector

sc = pyspark.SparkContext.getOrCreate()
sql_context = pyspark.SQLContext(sc)

df = sc.parallelize([ ( SparseVector(100, {1: 1.0}),)]).toDF(['v'])
print(df.head())
print(df.select(Summarizer.mean(col('v'))).head())

输出:

Row(v=SparseVector(100, {1: 1.0})) 
Row(mean(v)=DenseVector([0.0, 1.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]))

编辑

聚合稀疏向量的另一种实现方式也很重要


Tags: fromimportdfsqlcol向量mlhead

热门问题