5

मैं स्पार्क 2.1.0 का उपयोग करता हूं।स्पार्क-एमएललिब पीएमएमएल फ़ाइल में सटीक कॉलम नामों के साथ डेटाफ़िल्ल्ड मानों को कैसे प्रतिस्थापित करें?

मैं स्पार्क-एमएलआईबीबी रैखिक रिग्रेशन मॉडल को पीएमएमएल फ़ाइल के रूप में निर्यात करने की कोशिश कर रहा हूं। मैंने पीएमएमएल फ़ाइल को सफलतापूर्वक निर्यात भी किया है। लेकिन उस फाइल में, मैं इसमें कोई फ़ील्ड नाम नहीं देख सका। सभी मैं देख सकता हूँ

enter image description here

किसी को भी मुझे पता है इस का कारण क्या करते हैं सकता है इस तरह है? साथ ही, कृपया मुझे बताएं कि उस स्थान पर कॉलम नाम कैसे प्राप्त करें।

उत्तर

1

पीएमएमएल डेटा प्रारूप में अपाचे स्पार्क मॉडल निर्यात करने के दो दृष्टिकोण हैं। सबसे पहले, स्पार्क एमएल अमूर्त स्तर पर काम करते समय, आप JPMML-SparkML लाइब्रेरी का उपयोग कर सकते हैं। दूसरा, स्पार्क एमएलआईबीबी एब्स्ट्रक्शन स्तर पर काम करते समय, जो यहां मामला प्रतीत होता है, तो आप बिल्ट-इन PMMLExportable विशेषता का उपयोग कर सकते हैं।

जेपीएमएमएल-स्पार्कएमएल स्पार्क एमएल डेटा स्कीमा से कॉलम नाम DataFrame#schema() के माध्यम से कॉलम नाम पुनर्प्राप्त करता है। दुर्भाग्यवश, स्पार्क एमएलआईबीबी के लिए ऐसा कोई विकल्प नहीं है, इसलिए फीचर नाम "field_ {n}" और लेबल नाम "लक्ष्य" केवल डमी हार्ड-कोड वाले नाम हैं।

यह JPMML-Model लाइब्रेरी का उपयोग कर PMML दस्तावेज़ में फ़ील्ड नाम बदलने के लिए काफी आसान है:

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

आप एक PMML फ़ाइल को यह PMML वस्तु दृष्टान्त मार्शल हो, तो आप देख सकते हैं कि क्षेत्र 'लक्ष्य' (और इसके सभी संदर्भ) का नाम बदलकर "वाई" कर दिया गया है। सुविधाओं के साथ प्रक्रिया दोहराएं।

संबंधित मुद्दे

 संबंधित मुद्दे