使用pyspark将TF-IDF功能提取为多列

时间:2020-06-25 15:07:49

标签: python pandas pyspark tf-idf

通常pyspark.ml.feature.IDF返回一个包含SparseVector的outputCol。我需要的是让N列具有实数值,其中N是IDF中定义的许多功能(稍后在catboost中使用该数据框)。

我试图将列转换为数组

def dense_to_array(v):
      new_array = list([float(x) for x in v])
      return new_array

dense_to_array_udf = F.udf(dense_to_array, T.ArrayType(T.FloatType()))

data = data.withColumn('tf_idf_features_array', dense_to_array_udf('tf_idf_features'))

然后使用Pandas转换为列

data = data.toPandas()
cols = [f'tf_idf_{i}' for i in range(32)]
data = pd.DataFrame(info['tf_idf_features_array'].values.tolist(), columns=cols)

我不喜欢这样,因为我发现它真的很慢。有没有办法在没有熊猫的情况下通过pyspark解决我的问题?

0 个答案:

没有答案