我正在尝试使用pyspark的VectorAssembler函数,但它似乎无法正常工作。 我有一个 Twitter 数据的数据框,其中每个主题标签为一行,一年中的每一天为一列,并计算该主题标签在这一天被使用的次数。我想对其进行矢量化,我的代码是:
%%spark
from pyspark.ml.feature import VectorAssembler
assembler = VectorAssembler(inputCols = daily_hashtag_matrix.columns[1:], outputCol = "vector")
output = assembler.transform(daily_hashtag_matrix)
daily_vector = output.select( "vector")
daily_vector.show(n=15)
然而,输出并不符合预期,从某种意义上说,对于几行来说,它是我想要的向量,而对于大多数行来说不是,请参见下文:
+--------------------+
| vector|
+--------------------+
|(356,[6,62,98,228...|
|(356,[4,10,11,12,...|
|(356,[12,117,209,...|
|(356,[186,187],[1...|
| (356,[79],[1.0])|
|(356,[152,168],[1...|
|(356,[1,15,25,29,...|
|(356,[3,4,5,9,11,...|
|(356,[38,57,184,2...|
|(356,[3,6,9,17,35...|
|(356,[18,31,49,90...|
| (356,[351],[1.0])|
|[3.0,1.0,0.0,0.0,...|
|(356,[102,103],[4...|
|(356,[6,110,206],...|
+--------------------+
我希望将所有行作为输出中的第 13 行。我做错了什么? 预先感谢
DenseVector
,而其余的称为 SparseVector
,其中该行的大部分值都是零。看看下面的示例
from pyspark.ml.feature import VectorAssembler
df = spark.createDataFrame([
(1, 0, 3),
(0, 0, 0),
], ["a", "b", "c"])
vecAssembler = VectorAssembler(outputCol="features")
vecAssembler.setInputCols(["a", "b", "c"])
vecAssembler.transform(df).collect()
[Row(a=1, b=0, c=3, features=DenseVector([1.0, 0.0, 3.0])),
Row(a=0, b=0, c=0, features=SparseVector(3, {}))]
当我在 jupyter 实验室中执行以下操作时,出现此错误:
从 pyspark.ml.feature 导入 VectorAssembler
错误: ModuleNotFoundError Traceback(最近一次调用最后一次) 第 1 行 [5] 中的单元格 ----> 1 从 pyspark.ml.feature 导入 VectorAssembler
谁能告诉我如何修复吗?