我在spark中有一个稀疏向量,我想随机洗牌(重新排序)它的内容。这个向量实际上是一个tf-idf向量,我想要的是对它重新排序,以便在我的新数据集中,特征具有不同的顺序。使用scala有什么方法可以做到这一点吗?这是我生成tf-idf向量的代码:
val tokenizer = new Tokenizer().setInputCol("text").setOutputCol("words")
val wordsData = tokenizer.transform(data).cache()
val cvModel: CountVectorizerModel = new CountVectorizer()
.setInputCol("words")
.setOutputCol("rawFeatures")
.fit(wordsData)
val featurizedData = cvModel.transform(wordsData).cache()
val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
val idfModel = idf.fit(featurizedData)
val rescaledData = idfModel.transform(featurizedData).cache()
1条答案
按热度按时间dgiusagp1#
也许这是有用的-
加载测试数据
洗牌向量
你也可以用上面的
udf
创造Transformer
把它放到管道里请务必使用
import org.apache.spark.ml.linalg._
###update-1将无序向量转换为稀疏向量