我是新手,正在尝试使用某些MLlib函数来帮助我进行学校项目。所有有关如何使用MLlib进行分析的文档似乎都使用了向量,我想知道是否可以仅对数据帧配置我想做的事情,而不是在spark中配置向量。
例如,在scala的执行PCA的文档中是:
"val data = Array(
Vectors.sparse(5, Seq((1, 1.0), (3, 7.0))),
Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0),
Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0))
val df = spark.createDataFrame(data.map(Tuple1.apply)).toDF("features")
val pca = new PCA().fit(df)"
etc ....为此的是在这里:https://spark.apache.org/docs/latest/ml-features.html#pca
有没有一种方法不必创建这些向量,只需将其配置为我已经创建的数据帧即可。我已经创建的数据框有50多个列和15,000多个行,因此为每列创建向量确实不可行。 有没有人有任何想法或建议。最后,不幸的是,对于我的项目,我仅限于在Scala中使用Spark,不允许使用Pyspark,Java for Spark或SparkR。 如果不清楚,请告诉我。 谢谢!
答案 0 :(得分:1)
您要寻找的是向量汇编器转换器,该转换器需要一个数据帧列的数组并生成一个向量列,然后可以将ML管道与汇编器和PCA一起使用。
帮助文档在这里
如果您需要的不仅仅是PCA,则可以使用低级RDD转换。