मैं मशीन लर्निंग मॉडल बनाने के लिए वर्कफ़्लो का निर्माण कर रहा हूँ (मेरे मामले में, पायथन pandas
और sklearn
पैकेज का उपयोग करके ) एक बहुत बड़े डेटाबेस से खींचे गए डेटा (यहाँ, वर्टिका बाय एसक्यूएल pyodbc
) और, और उस प्रक्रिया में एक महत्वपूर्ण कदम के लिए लापता को शामिल करना शामिल है भविष्यवक्ताओं के मूल्य। यह एक ही एनालिटिक्स या स्टैटिस्टिक्स प्लेटफ़ॉर्म के भीतर सीधा है --- यह पायथन, आर, स्टाटा, आदि हो ।--- लेकिन मैं उत्सुक हूं कि मल्टी-प्लेटफ़ॉर्म वर्कफ़्लो में इस चरण का पता लगाना सबसे अच्छा है।
पायथन में ऐसा करना काफी सरल है, या तो sklearn.preprocessing.Imputer
कक्षा के साथ , pandas.DataFrame.fillna
विधि का उपयोग करके , या हाथ से (उपयोग की गई प्रतिरूपण विधि की जटिलता के आधार पर)। लेकिन जब से मैं सैकड़ों लाखों रिकॉर्ड भर में दर्जनों या सैकड़ों स्तंभों के लिए इसका उपयोग करने जा रहा हूं, मुझे आश्चर्य है कि क्या एसक्यूएल के माध्यम से सीधे समय से पहले ऐसा करने का एक अधिक कुशल तरीका है। वर्टिका जैसे एक वितरित मंच में ऐसा करने की संभावित क्षमताओं के अलावा, इससे हमें तालिकाओं के "पूर्ण" संस्करणों के निर्माण के लिए एक स्वचालित पाइपलाइन बनाने की अनुमति देने का अतिरिक्त लाभ होगा, इसलिए हमें एक नए सेट में भरने की आवश्यकता नहीं है। हर बार जब हम किसी मॉडल को चलाना चाहते हैं, तब से मानों की अनुपलब्धता।
मैं इस बारे में बहुत मार्गदर्शन नहीं कर पाया, लेकिन मुझे लगता है कि हम कर सकते हैं:
- प्रत्येक अपूर्ण कॉलम के लिए स्थानापन्न मानों की तालिका (जैसे, माध्य / माध्य / विधा, समग्र या समूह द्वारा) बनाएं
- प्रत्येक पंक्ति और अपूर्ण कॉलम के लिए एक स्थानापन्न मान निर्दिष्ट करने के लिए मूल तालिका के साथ स्थानापन्न मान तालिका में शामिल हों
- यदि उपलब्ध हो तो मूल मूल्य लेने के लिए केस स्टेटमेंट की एक श्रृंखला का उपयोग करें और स्थानापन्न मूल्य अन्यथा
क्या यह वर्टिका / एसक्यूएल में करने के लिए एक उचित चीज है, या क्या इसके बजाय पायथन में परेशान करने और इसे संभालने का एक अच्छा कारण है? और यदि उत्तरार्द्ध, तो स्केलेर या इसके विपरीत पंडों में ऐसा करने के लिए एक मजबूत मामला है? धन्यवाद!