पृष्ठभूमि: मैं ऑस्टिन में एक स्टार्टअप में एक डेटा वैज्ञानिक हूं, और मैं ग्रेड स्कूल (भौतिकी) से आता हूं। मैं डेटा विश्लेषण के लिए दिन-प्रतिदिन पायथन का उपयोग करता हूं, लेकिन आर का उपयोग थोड़ा करता हूं। मैं C # /। NET और जावा (सिर्फ दैनिक के बारे में) का उपयोग करता हूं, मैंने C ++ का उपयोग धीरे-धीरे स्कूल में किया।
मुझे लगता है कि संख्या विज्ञान (आर के ऊपर) के लिए पायथन का उपयोग करने के साथ मुख्य समस्या उपयोगकर्ता समुदाय का आकार है। चूंकि भाषा हमेशा के लिए आसपास रही है, बहुत से लोगों ने ऐसी चीजें की हैं जो आप करना चाहते हैं। इसका मतलब यह है कि, जब एक कठिन समस्या का सामना करना पड़ता है, तो आप केवल पैकेज डाउनलोड कर सकते हैं और काम कर सकते हैं। और आर "बस काम करता है": आप इसे एक डेटासेट देते हैं, और यह जानता है कि सारांश आँकड़े क्या उपयोगी हैं। आप इसे कुछ परिणाम देते हैं, और यह जानते हैं कि आपको क्या भूखंड चाहिए। आपके द्वारा बनाए जाने वाले सभी सामान्य भूखंड हैं, यहां तक कि कुछ सुंदर गूढ़ भी हैं जिन्हें आपको विकिपीडिया पर देखना होगा। के रूप में अच्छा के रूप में डरावना / सुन्न / पांडा / आँकड़ेmodels / आदि पायथन के लिए हैं, वे आर मानक पुस्तकालय के स्तर पर नहीं हैं।
आर पर पायथन का मुख्य लाभ यह है कि यह सी परिवार में एक वास्तविक प्रोग्रामिंग भाषा है। यह आसानी से तराजू है, इसलिए यह बोधगम्य है कि आपके सैंडबॉक्स में आपके पास कुछ भी उत्पादन में उपयोग किया जा सकता है। पाइथन में ऑब्जेक्ट ओरिएंटेशन बेक किया गया है, आर के विपरीत जहां यह एक तरह की सोच के बाद लगता है (क्योंकि यह है)। अन्य सामान है जो पायथन भी अच्छी तरह से करता है: थ्रेडिंग और समानांतर प्रसंस्करण बहुत आसान है, और मुझे यकीन नहीं है कि अगर आर में मामला है और पायथन सीखना आपको एक शक्तिशाली स्क्रिप्टिंग टूल भी देता है। पाइथन के लिए वास्तव में अच्छे (मुफ्त) आईडीई भी हैं, अगर आप भुगतान करने के लिए तैयार हैं ($ 100 से कम), तो बेहतर है और मुझे यकीन नहीं है कि यह आर के लिए मामला है - एकमात्र आर आईडीई जिसके बारे में मुझे पता है आर स्टूडियो, जो बहुत अच्छा है, लेकिन मेरे अनुभव में PyDev + ग्रहण जितना अच्छा नहीं है।
मैं इसे एक किकर के रूप में जोड़ूंगा: चूंकि आप अभी भी स्कूल में हैं, इसलिए आपको नौकरियों के बारे में सोचना चाहिए। आप अत्यधिक कुशल आर देवों की तुलना में अत्यधिक कुशल अजगर देवों के लिए अधिक नौकरी पोस्टिंग पाएंगे। ऑस्टिन में, Django देवों के लिए नौकरियां आसमान से गिरने की तरह हैं। यदि आप वास्तव में आर को अच्छी तरह से जानते हैं, तो कुछ स्थान हैं जहां आप उस कौशल (उदाहरण के लिए क्रांति विश्लेषिकी) को भुनाने में सक्षम होंगे, लेकिन बहुत सी दुकानें पायथन का उपयोग करती प्रतीत होती हैं। डेटा विश्लेषण / डेटा विज्ञान के क्षेत्र में भी, अधिक लोग पायथन की ओर रुख करते हैं।
और यह न समझें कि आप उन लोगों के लिए काम कर सकते हैं, जो केवल जावा को जानते हैं (कहते हैं)। वे लोग आपके पायथन कोड को बहुत आसानी से पढ़ पाएंगे। यदि आप R में अपने सभी काम करते हैं तो यह जरूरी नहीं होगा। (यह अनुभव से आता है।)
अंत में, यह सतही लग सकता है, लेकिन मुझे लगता है कि पायथन प्रलेखन और नामकरण परंपराएं (जो धार्मिक रूप से पालन की जाती हैं, यह पता चला है) उपयोगितावादी आर डॉक्टर की तुलना में बहुत अच्छा है। इस पर गरमागरम बहस होगी, मुझे यकीन है, लेकिन पायथन में जोर पठनीयता है। इसका मतलब है कि पायथन कार्यों के तर्क में ऐसे नाम हैं जिन्हें आप पढ़ सकते हैं, और इसका मतलब कुछ है। आर में, तर्क नामों को अक्सर काट दिया जाता है --- मैंने पायथन में यह कम सच पाया है। यह पांडित्यपूर्ण लग सकता है, लेकिन यह मुझे 'xlab' जैसी चीजों को लिखने के लिए पागल कर देता है, जब आप किसी तर्क को आसानी से 'x_label' नाम दे सकते हैं (सिर्फ एक उदाहरण) --- इसका बहुत बड़ा प्रभाव पड़ता है जब आप एक सीखने की कोशिश कर रहे हों नया मॉड्यूल / पैकेज एपीआई। R doc पढ़ना लिनक्स मैन पेजों को पढ़ने जैसा है --- यदि यही आपकी नाव को तैरता है, तो आपके लिए अधिक शक्ति है।
कहा जा रहा है कि सभी, मैं आपको निम्नलिखित सुझाव दूंगा (जो कि मेरा विशिष्ट वर्कफ़्लो भी है): चूंकि आप पायथन को जानते हैं, इसलिए इसे अपने पहले टूल के रूप में उपयोग करें। जब आपको पायथन की कमी महसूस होती है, तो आप जो चाहते हैं, उसे करने के लिए पर्याप्त R सीखें, और फिर या तो:
- आर में स्क्रिप्ट लिखें और सबप्रोसेस मॉड्यूल का उपयोग करके पायथन से उन्हें चलाएं, या
- RPy मॉड्यूल स्थापित करें।
पायथन का उपयोग करें कि क्या पायथन अच्छा है और उपरोक्त में से एक के साथ अंतराल में भरें। यह मेरा सामान्य वर्कफ़्लो है --- मैं आमतौर पर चीजों को प्लॉट करने के लिए आर का उपयोग करता हूं, और भारी उठाने के लिए पायथन।
इसलिए योग करने के लिए: पठनीयता पर जोर देने के कारण ("पायथोनिक के लिए खोज Gooogle"), अच्छी, मुफ्त IDEs की उपलब्धता, यह तथ्य कि यह भाषाओं के C परिवार में है, अधिक संभावना है कि आप इसे भुनाने में सक्षम होंगे। निपुणता, और भाषा के सभी बेहतर प्रलेखन-शैली के बारे में, मैं सुझाव दूंगा कि पायथन को अपना जाना चाहिए, और केवल आवश्यक होने पर आर पर भरोसा करना चाहिए।
ठीक है, यह (अब तक) एक स्टैक साइट पर मेरा सबसे लोकप्रिय उत्तर है, और यह # 1 भी नहीं है :) मुझे उम्मीद है कि इसने रास्ते में कुछ लोगों की मदद की है।
किसी भी दर पर, मैं इस क्षेत्र में कई वर्षों के बाद निम्नलिखित निष्कर्ष पर आया हूं:
यह शायद गलत सवाल है।
"मुझे इस विशेष तकनीक को सीखना चाहिए" पूछना एक बुरा सवाल है। क्यों?
- तकनीक बदलती है। आपको हमेशा दूसरी तकनीक सीखनी होगी। अगर आप ट्विटर पर काम करते हैं, तो वे स्काला चलाते हैं। कुछ जगह पाइथन की दुकानें हैं। कुछ स्थानों की परवाह नहीं है। आप काम पर रखने के लिए नहीं जा रहे हैं क्योंकि आप जानते हैं या तकनीक के कुछ विशेष टुकड़े को नहीं जानते हैं - यदि आप एक नई तकनीक नहीं सीख सकते हैं, तो आप निकाल सकते हैं (और होना चाहिए)। यह पसंद है, अगर एक नया पाइप रिंच निकलता है, और आप एक प्लम्बर हैं, और आप यह पता नहीं लगा सकते हैं कि नया पाइप रिंच कैसे काम करता है, तो आप शायद एक सुंदर घटिया प्लम्बर हैं।
- "क्या मैं इस तकनीक को सीखता हूं" या "क्या मैं वास्तविक समस्याओं को सुलझाने में अधिक समय बिताता हूं" की पसंद को देखते हुए, आपको हमेशा अपवाद के बिना, बाद वाले को चुनना चाहिए।
एक डेटा वैज्ञानिक के रूप में, आपका काम समस्याओं को हल करना है । ज्ञान का एक सा हिस्सा बहुत हमेशा हर सम्मेलन में खो जाता है या आपसे मिलने जाता है - हर "बड़ा डेटा" बात जो मैंने कभी देखी है वह तकनीक पर केंद्रित है, समस्याओं को हल करने पर नहीं। आमतौर पर हल करने वाली वास्तविक समस्या को अंत में कुछ स्लाइड्स पर फिर से लागू किया जाता है:
[टॉक टाइटल = "कूल न्यू स्टार्टअप में डीप लर्निंग"] ... [४५ मिनट का डायग्राम और टेक्नो-बैबेल जिसके दौरान मैं अपने फोन को चेक करता हूं] फिर से] हम अपनी गहरी सीखने की दिनचर्या को चला सकते हैं, [जागो: यही कारण है कि मैं आया!] जिसका विवरण मालिकाना है। प्रशन?
यह एक बुरा प्रभाव देता है कि क्षेत्र तकनीक के बारे में है, और यह सिर्फ सच नहीं है। यदि आप स्काला, या पायथन, या आर में वास्तव में अच्छे हैं, लेकिन आप समस्याओं को सुलझाने में बहुत बुरे हैं तो आप एक घटिया वैज्ञानिक बन जाएंगे ।
पाको नाथन कुछ महीने पहले ऑस्टिन में एक दिन "बड़े डेटा" सम्मेलन में थे, और उन्होंने कहा कि "रसायन विज्ञान टेस्ट ट्यूब के बारे में नहीं है"। यह बहुत अधिक रकम जुटाता है - डेटा विज्ञान स्काला, या हडोप, या स्पार्क, या जो भी अन्य-तकनीक-डु-पत्रिकाओं के बारे में पॉप-अप नहीं है। दिन के अंत में, मैं उन लोगों को नियुक्त करना चाहता हूं जो सोचते हैं, न कि वे लोग जो टूलकिट सीखने के लिए स्टैक ओवरफ्लो का उपयोग करने में माहिर हैं।
इसी तरह, अगर आप नौकरी के लिए इंटरव्यू देने जाते हैं, और वे आपको सिर्फ इसलिए नौकरी पर नहीं रखते हैं क्योंकि आप कुछ प्रोग्रामिंग लैंग्वेज नहीं जानते हैं, तो वह कंपनी बेकार हो जाती है । उन्हें समझ में नहीं आता है कि "डेटा वैज्ञानिक" का क्या मतलब है, और यह शायद आपके लिए बेहतर है अगर यह काम नहीं करता है।
अंत में, यदि आपकी समस्या सुलझाने की क्षमता सीमांत है (अपने आप से ईमानदार रहें), या आप वास्तव में चीजों के तकनीकी पक्ष का आनंद लेते हैं, या सीखने की तकनीक वही है जो आप वास्तव में प्यार करते हैं (फिर से, ईमानदार बनें) तो बहुत सारी तकनीक सीखें। आप हमेशा "डेटा इंजीनियर" प्रकार की भूमिकाएं पा सकते हैं जो आपके कौशल सेट में फिट होती हैं। यह एक बुरी बात नहीं है, डेटा इंजीनियर पहियों को चिकना करते हैं और आपके लिए डेटा वैज्ञानिक के रूप में अपना काम करना संभव बनाते हैं। (अंतर सॉफ्टवेयर आर्किटेक्ट बनाम विकास टीम के समान है।)