Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 稀疏向量与密集向量_Python_Apache Spark_Machine Learning_Pyspark_Sparse Matrix - Fatal编程技术网

Python 稀疏向量与密集向量

Python 稀疏向量与密集向量,python,apache-spark,machine-learning,pyspark,sparse-matrix,Python,Apache Spark,Machine Learning,Pyspark,Sparse Matrix,我如何知道我是否应该在PySpark中使用稀疏表示还是密集表示?我理解它们之间的区别(稀疏仅通过存储非零索引和值来节省内存),但就性能而言,是否存在描述何时在密集向量上使用稀疏向量的通用启发式方法 是否有一个通用的“截止”维度和0值的百分比,超过该维度通常最好使用稀疏向量?如果没有,我应该如何做决定?谢谢。需要记住的是pyspark.ml.linalg.Vector和pyspark.mllib.linalg.Vector只是Python和Java API之间的兼容层。没有全功能或优化的线性代数实

我如何知道我是否应该在PySpark中使用稀疏表示还是密集表示?我理解它们之间的区别(稀疏仅通过存储非零索引和值来节省内存),但就性能而言,是否存在描述何时在密集向量上使用稀疏向量的通用启发式方法


是否有一个通用的“截止”维度和0值的百分比,超过该维度通常最好使用稀疏向量?如果没有,我应该如何做决定?谢谢。

需要记住的是
pyspark.ml.linalg.Vector
pyspark.mllib.linalg.Vector
只是Python和Java API之间的兼容层。没有全功能或优化的线性代数实用程序,您不应该这样使用它们。可用的操作要么不是为性能而设计的,要么只是在封面下转换为标准NumPy阵列

当与其他
ml
/
mllib
工具一起使用时,将被序列化并转换为Java等价物,因此Python表示性能通常无关紧要

这意味着最大的实际问题是存储,一个简单的经验法则是:

  • 如果平均一半的条目为零,则最好使用
    SparseVector
  • 否则最好使用
    DenseVector