Pyspark 矢量汇编程序的错误构造,将不需要的值输入到特征中

Pyspark 矢量汇编程序的错误构造,将不需要的值输入到特征中,pyspark,pyspark-sql,feature-extraction,apache-spark-ml,Pyspark,Pyspark Sql,Feature Extraction,Apache Spark Ml,我曾多次使用矢量汇编程序,效果很好。但今天我将不需要的数据输入到特性中,如下图所示 输入4个不带NaN的特征,这些特征来自pySpark数据帧 assembler = VectorAssembler(inputCols = descritif.columns, outputCol = 'features') pcaFeatures = assembler.transform(descritif).select('features') pcaFeatures.show(truncate=False

我曾多次使用
矢量汇编程序
,效果很好。但今天我将不需要的数据输入到特性中,如下图所示

输入4个不带NaN的特征,这些特征来自pySpark数据帧

assembler = VectorAssembler(inputCols = descritif.columns, outputCol = 'features')
pcaFeatures = assembler.transform(descritif).select('features')
pcaFeatures.show(truncate=False)
为什么在features列的每一行前面都有
(5、[0,1]
,这正常吗? 它会影响学习吗?
两天后,我找到了解决问题的办法。书堆里有两篇文章并没有给出有效的解决办法

1-首先使用此udf函数转换数据

功能 2-然后将其应用于数据。
#皈依

df = pcaFeatures.withColumn('features_array', sparse_to_array_udf('features'))
如果你想把这个矩阵转换成向量,请访问这个网站。 因为在这一步之后,你可以得到一个稀疏矩阵,而不是向量,那么在拟合/变换数据时,你会在PCA或其他上得到这个错误(如下)

IllegalArgumentException:'要求失败:列pcaFeatures\u Norm 必须是 结构,值:数组> 但实际上是数组。”


经过两天的讨论,我找到了解决问题的办法。书堆里有两篇文章并没有给出有效的解决办法

1-首先使用此udf函数转换数据

功能 2-然后将其应用于数据。
#皈依

df = pcaFeatures.withColumn('features_array', sparse_to_array_udf('features'))
如果你想把这个矩阵转换成向量,请访问这个网站。 因为在这一步之后,你可以得到一个稀疏矩阵,而不是向量,那么在拟合/变换数据时,你会在PCA或其他上得到这个错误(如下)

IllegalArgumentException:'要求失败:列pcaFeatures\u Norm 必须是 结构,值:数组> 但实际上是数组。”