Odpowiedz

1

Istnieją dwa podejścia do eksportowania modeli Apache Spark do formatu danych PMML. Po pierwsze, pracując na poziomie abstrakcji Spark ML, można użyć biblioteki JPMML-SparkML. Po drugie, kiedy pracujesz na poziomie abstrakcji Spark MLlib, co wydaje się mieć tutaj miejsce, możesz użyć wbudowanej cechy PMMLExportable.

JPMML-SparkML pobiera nazwy kolumn ze schematu danych Spark ML za pośrednictwem DataFrame#schema(). Niestety, nie ma takiej opcji dla Spark MLlib, więc nazwy funkcji "field_ {n}" i nazwa etykiety "target" są po prostu fałszywymi, zakodowanymi nazwami.

Jest to dość proste, aby zmienić nazwę pola w dokumencie PMML pomocą JPMML-Model Biblioteka:

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"); 

Jeśli zebrać to PMML obiektu wystąpienie do pliku PMML, to widać, że pole „target” (i wszystkie jego odniesienia) zostało zmienione na "y". Powtórz procedurę z funkcjami.

Powiązane problemy