5

Spark 2.1.0 kullanıyorum.Spark-MLlib PMML dosyasında DataField değerleri tam sütun adları ile nasıl değiştirilir?

Spark-MLlib Doğrusal Regresyon modelini PMML dosyası olarak dışa aktarmaya çalışıyorum. PMML dosyasını da başarıyla ihraç ettim. Fakat bu dosyada, herhangi bir alan adı göremedim. Tüm görebildiğim

enter image description here

kimse bana bunun nedeni ne bildirmek Can, böyle mi? Ayrıca, bunun yerine sütun adlarını nasıl alacağımı lütfen bana bildirin.

cevap

1

Apache Spark modellerinin PMML veri biçimine aktarılmasında iki yaklaşım vardır. İlk olarak, Spark ML soyutlama seviyesinde çalışırken, JPMML-SparkML kütüphanesini kullanabilirsiniz. İkinci olarak, buradaki gibi görünen Spark MLlib soyutlama seviyesinde çalışırken, dahili PMMLExportable özelliğini kullanabilirsiniz.

JPMML-SparkML, sütun adlarını Spark ML veri şemasından DataFrame#schema() aracılığıyla alır. Ne yazık ki, Spark MLlib için böyle bir seçenek yoktur, bu yüzden "field_ {n}" isminin isimleri ve "target" etiket isimleri sadece korsan kodlanmış isimlerdir.

O JPMML-Model kütüphaneyi kullanan PMML belgedeki alanları yeniden adlandırmak için oldukça kolaydır: Bir PMML dosyasına bu PMML nesne örneğini sıralamakta Eğer

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

, o zaman görebilirsiniz alan "hedef" (ve tüm referansları) "y" olarak yeniden adlandırıldı. Prosedürü özellikleri ile tekrarlayın.