Brb ... मैं एक खरगोश छेद नीचे जा रहा हूँ (मैंने कोड डॉक्यूमेंटेशन कैसे सीखा)

अपने डेटा साइंस इमर्सिव के पिछले 3 महीनों में पीछे मुड़कर देखें, तो मुझे अपना समय तीन अलग-अलग हिस्सों में बिताना याद है: व्याख्यान, शोध, और समय एक खरगोश के छेद के नीचे जाने में व्यतीत हुआ। खरगोश छेद प्रोग्रामर्स के लिए एक सामान्य सादृश्य हैं। ऐसा तब होता है जब आप Google खोज करते हैं कि कैसे कुछ करना है, एक Stackoverflow या ब्लॉग पोस्ट में एक उत्तर ढूंढें, इसे आज़माएं, और फिर यह काम नहीं करता है क्योंकि… बेशक, आपको एक अलग आकार में अपने डेटा की आवश्यकता है या आपको एक अलग की आवश्यकता है पुस्तकालय। तो फिर आप Google खोज करते हैं कि आपको उस चीज़ को कैसे करना है जो आपको करने की आवश्यकता है, और आपको उत्तर मिल सकता है और शायद इस बार इसने काम किया लेकिन इसने कुछ और करने की संभावना भी खोली। और आप तब तक और गहरी खोज करते रहते हैं जब तक आप अपने आप को इतना गहरा नहीं गिरा लेते हैं कि आप यह भूल जाते हैं कि आपने इस रास्ते को पहले किस स्थान पर भेजा था।

जब आप कोडिंग कर रहे हों तो खरगोश के छेद नीचे जाने के कई कारण हैं। मेरे लिए, कारण थे:

1. कुछ नया लागू करने का तरीका सीखना 2. अधिक कुशल कोड लिखना चाहते हैं

मेरी कैपस्टोन परियोजना के लिए, मैंने आणविक संरचना डेटा पर दवा वर्गों की भविष्यवाणी करने के लिए एक जटिल तंत्रिका नेटवर्क और आवर्तक तंत्रिका नेटवर्क का निर्माण किया। मैंने ऐसा पहले कभी नहीं किया था, और कोई सुराग नहीं था कि कहां से शुरू करें। चुनौती यह थी कि क्लास के दूसरे से आखिरी हफ्ते तक हम इमर्सिव में न्यूरल नेटवर्क सीखने के लिए निर्धारित नहीं थे। मुझे पता था कि अगर मैं इस कैपस्टोन विचार को रखना चाहता हूं, तो मुझे अपने आप ही तंत्रिका नेटवर्क सीखने की जरूरत है। सौभाग्य से, मैं इस ब्लॉगपोस्ट पर आया, जिसने मुझे जो करना था, उसे ठीक से करने का एक उत्कृष्ट और तकनीकी ब्रेकडाउन दिया। (स्पॉयलर अलर्ट: लेखक, जॉय मच, 16 साल की थी जब उसने वह टुकड़ा लिखा था)। मैंने खुद से सोचा, अगर जॉय ऐसा कर सकता है, तो मैं भी कर सकता हूं।

मैं नीचे झुका और खरगोश के छेद में घुस गया।

मैंने डेटाकैम्प का इंट्रो टू दीप लर्निंग इन पाइथन और इमेज प्रोसेसिंग विद केरस पाठ्यक्रम लिया। मैंने पायथन पुस्तक में दीप लर्निंग पढ़ा। मैंने अपने प्रोजेक्ट आइडिया के बारे में केमिस्ट और डेटा वैज्ञानिकों से बात की।

खरगोश के छेद को नीचे जाने की कुंजी रास्ते में मील के पत्थर बनाने के लिए है। प्रत्येक चरण में, मुझे लगता है, "ठीक है .. अगर मैं इस टुकड़े का पता नहीं लगा सकता हूं, तो मैं यहां रुकूंगा और अपने कैपस्टोन विचार को बदल दूंगा।" मुझे अपनी स्नातक स्तर की पढ़ाई सुनिश्चित करने के लिए एक आकस्मिक योजना बनानी पड़ी। जैसा कि मैंने प्रत्येक मील का पत्थर पार किया और चौकी को पार किया, मैंने खुद को सोचा ... मैं यह कैसे कर रहा हूं?

मुझे महसूस हुआ कि इस पूरे सफर में, मैंने एक बहुत मूल्यवान कौशल उठाया था ... डॉक्यूमेंटेशन पढ़ना। जब मैंने पहली बार कोडिंग शुरू की थी, तो मेरे सवालों का एक सामान्य जवाब था, "क्या आपने दस्तावेज़ पढ़ने की कोशिश की है?" यह शायद सबसे उपयोगी लेकिन सबसे निराशाजनक उत्तर देने वाला था, क्योंकि मैं प्रलेखन पढ़ रहा था। मुझे अभी पता नहीं था कि इसका क्या मतलब है। मैं इसे बार-बार पढ़ता हूँ, उस बच्चे की तरह महसूस करता हूँ जो अपने तकिये के नीचे किताब रखकर सो जाता है, उम्मीद करता है कि जब वह उठेगा तो वह किताब में सब कुछ समेट लेगा।

मुझे इस बात को तोड़ने की कोशिश करें कि दस्तावेज़ीकरण को पढ़ने के लिए इसका क्या मतलब है, और इस कौशल को सुधारने में मेरी मदद करने के लिए मैंने जो कदम उठाए हैं। अब मैं समझता हूं कि जब लोग दस्तावेज को "पढ़" कहते हैं, तो वास्तव में रास्ते में कई अनदेखी कदम होते हैं।

यहां वे चरण हैं जो मैं आमतौर पर तब लेता हूं जब मैं "पठन" प्रलेखन करता हूं:

  1. अपने कंप्यूटर पर उदाहरण कोड चलाएँ। लाइन से लाइन पर जाएं और पता करें कि प्रत्येक रेखा क्या करती है। उदाहरण कोड पढ़ना और अपने स्वयं के डेटा पर उस कोड को लागू करने में कूदना आसान है। उदाहरण कोड को कॉपी और पेस्ट करने से, मैं यह समझने में चूक गया कि कोड क्या कर रहा था।
  2. प्रत्येक तर्क के लिए विभिन्न विकल्पों को आज़माएं। देखें कि प्रत्येक विकल्प आपके आउटपुट को कैसे बदलता है। मॉडल चलाते समय, किसी मॉडल के हाइपर पैरामीटर को बदलना उसके प्रदर्शन को कैसे प्रभावित करता है? क्या आप जानते हैं कि ऐसा क्यों होता है?
  3. कोड को बनाए गए डेटा या अपने डेटा के नमूने पर चलाएँ। यदि आपके संपूर्ण डेटासेट पर प्रयास करने से पहले यह काम करता है तो इसका पता लगाएं। इससे बहुत समय बचेगा!
  4. वास्तव में बदसूरत कोड लिखने से डरो मत। अपने कोड को तोड़ें। यह ठीक है। और फिर Google त्रुटि संदेश खोजता है।
  5. यदि यह काम करता है, तो इसे अपने बाकी डेटा पर चलाएं। इनमें से प्रत्येक चरण में आपने जो सीखा, उस पर अपने कोड में टिप्पणी छोड़ दें। इस तरह, अगली बार जब आप एक ही समस्या का सामना कर रहे हैं, तो आप पहले अपने नोट्स पर जा सकते हैं।

इस वर्कफ़्लो में प्रत्येक चरण को हुड के नीचे क्या हो रहा है की एक मूलभूत समझ बनाने में मदद करने के लिए डिज़ाइन किया गया है। इन चरणों के बिना, यह ऐसा था जैसे मैं पहले अक्षर और व्याकरण को समझे बिना एक किताब पढ़ने की कोशिश कर रहा था।

और यहाँ कुंजी है ... अपने आप को समय दें। मुझे पता है कि केवल यही कारण है कि मैं इसे क्रैक करने में सक्षम था क्योंकि मैं पूरी तरह से एक सीखने की स्थिति में डूब गया था। हर किसी के पास यह लक्जरी नहीं है, मैं समझता हूं। लेकिन यहां तक ​​कि सीमित समय के साथ, अपने आप को अबाधित समय के स्प्रिंट दें (कोई चेकिंग ईमेल, कोई सोशल मीडिया और ग्रंथों का जवाब नहीं)। 30 मिनट की खिड़कियां मेरे लिए अच्छा काम करती हैं। मैं पोमोडोरो तकनीक का एक दृढ़ विश्वास हूं, जो मुझे लगता है कि वास्तव में बाहर खींच सकता है और आपके समय का सबसे अधिक मूल्य दे सकता है। मुझे पता है कि जब आप शुरू कर रहे हैं तो यह बहुत ही भयानक लग सकता है, लेकिन आप इस बात से चकित होंगे कि आपका मन क्या उठा सकता है और अवशोषित कर सकता है। आपको ट्रैक पर रखने और प्रक्रिया के साथ पुरस्कृत महसूस करने में मदद करने के लिए मील के पत्थर और चेक प्वाइंट सेट करें।

और अगर आप कर सकते हैं, एक दोस्त मिल। जोड़ी प्रोग्रामिंग कई कंपनियों के लिए एक सामान्य वर्कफ़्लो है, क्योंकि खरगोश के छेद कम तनावपूर्ण हैं, और थोड़े मज़ेदार हैं, एक दोस्त के साथ। आप दोनों समझ के अलग दायरे के साथ समस्या पर आते हैं। और अपने ज्ञान को जोड़कर, आप समाधान ढूंढते हैं। इन पिछले 3 महीनों में मेरे गो-टू व्यक्ति होने के लिए हमारे टीए, डैन किम को चिल्लाओ।

मैंने उल्लेख किया कि मेरी एक प्रेरणा अधिक कुशल कोड लिखना है। मुझे मेरी पसंदीदा चीज़ साझा करें जो इन खरगोश छेद रोमांच में से एक से बाहर आई थी। डेटा वैज्ञानिकों के लिए और विशेष रूप से कागल प्रतियोगिताओं के लिए एक सामान्य कार्य, एक ही तरीके से कई डेटासेट को साफ़ करना है। मुझे अपने प्रशिक्षण डेटासेट की सफाई के लिए ज्यूपिटर नोटबुक का उपयोग करना पसंद है, क्योंकि यह मेरे आउटपुट को रास्ते में देखने के लिए सहायक है। लेकिन जब मैं एक नए डेटासेट पर समान चरण चलाना चाहता हूं, तो ज्यूपिटर नोटबुक उपयोगी नहीं है। मुझे लगता है कि दो अलग-अलग नोटबुक के लिए यह बेमानी है, बस एक अलग "read_csv" लाइन के साथ।

यहाँ मैंने इसके बजाय क्या किया:

  • एक अजगर स्क्रिप्ट में निर्यात नोटबुक की सफाई।
  • कोड को साफ करें और इसे एक कस्टम फ़ंक्शन में बदल दें।
देखें कि यह वर्कफ़्लो यहां कैसे लागू किया गया है: https://github.com/veeps/ames_housing
  • अब मैं उस स्क्रिप्ट को आयात कर सकता था और उसे किसी नए डेटा सेट पर चला सकता था।
# इसे अपने नोटबुक% रन पथ / to / clean.py के शीर्ष पर आयात करें
# अपने नए डेटासेट df = क्लीन ("पथ / टू / न्यू / डेटासेट.स्कॉव" पर फंक्शन चलाएं)

यह वास्तव में प्रतिलिपि प्रस्तुत करने योग्य कोड लिखने के लिए सहायक है। यह टीम के सदस्यों के साथ अजगर स्क्रिप्ट को साझा करने का एक शानदार तरीका है ताकि वे नए डेटासेट पर सफाई फ़ंक्शन चला सकें।

आपकी कुछ पसंदीदा चीजें जो आपने हाल ही में सीखी हैं? क्या आपके पास प्रलेखन पढ़ने के तरीके के बारे में आपका अपना कोई सुझाव है?