在Pyspark中将多个分类列转换为数字

时间:2016-12-27 10:36:07

标签: python pyspark apache-spark-mllib

在应用spark ml管道之前,我一直试图将多个分类列转换为数字。 我了解我们可以使用spark.ml.feature库中提供的StringIndexerOneHotEncoderVectorAssembler

from pyspark.ml.feature import OneHotEncoder, StringIndexer

cat1Indexer = StringIndexer(inputCol="CatFeature1",outputCol="indexedCat1", handleInvalid="skip")
cat1Encoder = OneHotEncoder(inputCol="indexedCat1", outputCol="CatVector1")
fAssembler = VectorAssembler(inputCols=["CatVector1"],outputCol="features")

但是,我的数据中有130个分类列。 如何在所有分类列上应用循环以将它们全部转换为数字,而不是手动遍历每个列,如下所示:

pipeline = Pipeline(stages=[cat1Indexer, cat2Indexer, cat3Indexer,
                        cat1Encoder, cat2Encoder, cat3Encoder,
                        fAssembler])

0 个答案:

没有答案