Il existe deux approches pour l'exportation des modèles Spark Apache au format de données PMML. Tout d'abord, lorsque vous travaillez au niveau d'abstraction de Spark ML, vous pouvez utiliser la bibliothèque JPMML-SparkML. Deuxièmement, lorsque vous travaillez au niveau d'abstraction Spark MLlib, ce qui semble être le cas ici, vous pouvez utiliser le trait PMMLExportable
intégré.
JPMML-SparkML récupère les noms de colonnes à partir du schéma de données de Spark ML via DataFrame#schema()
. Malheureusement, il n'existe pas d'option de ce type pour Spark MLlib, donc les noms de fonctions "field_ {n}" et le nom d'étiquette "target" sont simplement des noms codés en dur.
Il est assez facile de renommer des champs dans le document PMML en utilisant la bibliothèque JPMML-Model:
pmmlExportable.toPMML("/tmp/raw-pmml-file")
org.dmg.pmml.PMML pmml = org.jpmml.model.JAXBUtil.unmarshal("/tmp/raw-pmml-file");
org.jpmml.model.visitors.FieldRenamer targetRenamer = new FieldRenamer(FieldName.create("target"), FieldRenamer.create("y"));
targetRenamer.applyTo(pmml);
org.jpmml.model.JAXBUtil.marshal(pmml, "/tmp/final-pmml-file");
Si vous, maréchal cette instance d'objet PMML dans un fichier PMML, vous pouvez voir que le champ « cible » (et toutes ses références) a été renommé en "y". Répétez la procédure avec les fonctionnalités.