In spark/python/pyspark/ml/feature.py, StringIndexerModel has a property method named labels, which is different with other properties in other models.
In CounterVectorizerModel (as an example):
In StringIndexerModel, the returned value of labels is not an array of labels as expected. Otherwise it is a JavaMember of py4j.
What's more, the Pickle in Python side cannot deserialize Scala Array normally. According to my experiments, it translates Array[String] into Tuple, Array[Int] to array.array. It may bring some errors.