我正在寻找如何从Dataframe中选择许多列(2000+)作为功能。我不想一个一个地写下这个名字。 我正在进行分类,我有大约2000个功能。
数据是一个包含大约2000列的Dataframe。 首先,我获取了DF的所有列名称并删除了9列,因为我不需要它们。
我的想法是使用所有列名称来提供VectorAssembler。结果应该是第一行的[第一个特征的值,第二个特征的值,第三个特征值...],这对于我的所有Dataframe都是如此。
但我有这个错误:
java.lang.IllegalArgumentException:Field" features"不存在。
编辑:如果有什么不清楚的地方,请告诉我,我可以解决它。
我删除了一些变形金刚,因为它不是我的问题所在。(StringIndexer,VectorIndexer,IndexToString)
val array = data.columns drop(9)
val assembler = new VectorAssembler()
.setInputCols(array)
.setOutputCol("features")
val Array(trainingData, testData) = data.randomSplit(Array(0.8, 0.2))
val rf = new RandomForestClassifier()
.setLabelCol("indexedLabel")
.setFeaturesCol("features")
.setNumTrees(50)
val pipeline = new Pipeline()
.setStages(Array(assembler, rf))
val model = pipeline.fit(trainingData)
编辑2 我解决了我的问题。我取下了Vector Indexer并在VectorAssembler中使用了数组,它运行得很好。 至少,我得到一个结果。