我正在使用Spark,pyspark并且已经pipeline设置了一堆StringIndexer对象,用于将字符串列编码为索引列:
indexers = [StringIndexer(inputCol=column, outputCol=column + '_index').setHandleInvalid('skip')
for column in list(set(data_frame.columns) - ignore_columns)]
pipeline = Pipeline(stages=indexers)
new_data_frame = pipeline.fit(data_frame).transform(data_frame)
Run Code Online (Sandbox Code Playgroud)
问题是,StringIndexer安装好每个对象后,我需要获取它们的标签列表。对于单列和StringIndexer没有管道的单列来说,这是一件容易的事。我可以labels在将索引器安装到上之后访问属性DataFrame:
indexer = StringIndexer(inputCol="name", outputCol="name_index")
indexer_fitted = indexer.fit(data_frame)
labels = indexer_fitted.labels
new_data_frame = indexer_fitted.transform(data_frame)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用管道时,这似乎是不可能的,或者至少我不知道该怎么做。
所以我想我的问题归结为:有没有一种方法可以访问在索引过程中为每个单独的列使用的标签?
还是在这个用例中我必须放弃管道,例如循环遍历StringIndexer对象列表并手动执行?(我肯定这是可能的。但是使用管道会更好一些)