私はpyspark tf-idf関数を適用し、次の結果を得ました。pysparkのTF-IDFデータフレームにSVDを適用する方法
| features |
|----------|
| (35,[7,9,11,12,19,26,33],[1.2039728043259361,1.2039728043259361,1.2039728043259361,1.6094379124341003,1.6094379124341003,1.6094379124341003,1.6094379124341003]) |
| (35,[0,2,4,5,6,11,22],[0.9162907318741551,0.9162907318741551,1.2039728043259361,1.2039728043259361,1.2039728043259361,1.2039728043259361,1.6094379124341003]) |
したがって、スパースベクトルを行として含む1つの列(フィーチャ)を持つデータフレームです。
今、私は私は次のことを試してみましたが、うまくいきませんでした
https://spark.apache.org/docs/latest/api/python/pyspark.mllib.html?highlight=svd#pyspark.mllib.linalg.distributed.IndexedRowMatrix.computeSVDこっちで説明されてSVD機能を実行できるように、このデータフレームからIndexRowMatrixを構築したい:mat = RowMatrix(tfidfData.rdd.map(lambda x: x.features))
TypeError: Cannot convert type <class 'pyspark.ml.linalg.SparseVector'> into Vector
私はRowMatrixを使用しました。なぜなら、タプルを提供する必要はありませんが、RowMatrixを構築することすらできないからです。 IndexedRowMatrixは私にとってもっと難しいでしょう。
したがって、ts-idfデータフレームをpysparkに出力してIndexedRowMatrixを実行する方法はありますか?