डेटा विश्लेषण के लिए आर बनाम पायथन [बंद]


60

मैं लगभग एक साल से प्रोग्रामिंग कर रहा हूं और मुझे वास्तव में डेटा विश्लेषण और मशीन सीखने में दिलचस्पी है। मैं कुछ ऑनलाइन पाठ्यक्रमों में भाग ले रहा हूं और कुछ पुस्तकों को पढ़ रहा हूं।

मैं जो कुछ भी कर रहा हूं वह या तो आर या पायथन का उपयोग कर रहा है और मुझे इस बात पर सुझाव की तलाश है कि मुझे एक भाषा पर ध्यान केंद्रित करना चाहिए या नहीं (और यदि ऐसा है) या दोनों को साथ लेकर चलना चाहिए; क्या वे एक दूसरे के पूरक हैं?

- मुझे यह उल्लेख करना चाहिए कि मैं स्कूल में सी # का उपयोग करता हूं लेकिन स्व-अध्ययन के माध्यम से पायथन से परिचित हूं।


यहाँ शायद एक दिलचस्प लिंक है: coursera.org/course/compdata
Giorgio

जवाबों:


39

मैं दोनों पायथन का उपयोग करता हूं (सुन्न और स्किपी सहित संभोग के डेटा विश्लेषण के लिए) और एक दूसरे के बगल में आर। हालाँकि, मैं डेटा विश्लेषण करने के लिए विशेष रूप से आर का उपयोग करता हूं, और अधिक सामान्य प्रोग्रामिंग कार्यों (जैसे कंप्यूटर मॉडल के वर्कफ़्लो नियंत्रण) के लिए पायथन।

बुनियादी कार्यों के संदर्भ में, सरणियों और सॉर्ट पर ऑपरेशन, आर और पायथन + न्यूपी बहुत तुलनीय हैं। यह सांख्यिकीय कार्यों के बहुत बड़े पुस्तकालय में है जिसका आर को फायदा है। इसके अलावा, matplotlib ggplot2 जितना अच्छा नहीं लगता है, लेकिन मैंने उतना matplotlib का उपयोग नहीं किया है। इसके अलावा, मैं पहले एक भाषा पर ध्यान केंद्रित करूंगा और उसी की बारीकियों पर अच्छा बनूंगा। आप डेटा विश्लेषण में रुचि रखते हैं, न कि सॉफ्टवेयर इंजीनियरिंग में। मैं आर को चुनता और उससे चिपक जाता। उस ने कहा, मुझे लगता है कि पायथन + संख्या + स्कपी + स्किटिट का चयन रक्षात्मक और उत्कृष्ट पसंद है, यह सिर्फ इतना है कि मुझे लगता है कि आर अभी थोड़ा और उत्कृष्ट है।

मैं आपके आस-पास भी देखूंगा कि आपके सहयोगी और आपके क्षेत्र के अन्य लोग क्या उपयोग कर रहे हैं। यदि वे सभी का उपयोग करते हैं, कहते हैं, पायथन, तो यह समझ में आता है कि उनसे आसानी से सीखने और कोड का आदान-प्रदान करने के लिए उससे चिपके रहना चाहिए।

अस्वीकरण: ध्यान दें कि मैं एक भारी आर उपयोगकर्ता हूं, इसलिए मेरी राय पक्षपातपूर्ण हो सकती है, हालांकि मैंने अपने उत्तर को यथासंभव उद्देश्य के रूप में रखने की कोशिश की है। इसके अलावा, मैंने पाइथन + नंबरी का बड़े पैमाने पर उपयोग नहीं किया है, आखिरकार मैं कोलीगौस को जानता हूं जो इसमें अपने सभी डेटा विश्लेषण करते हैं।

ps: यह लिंक दिलचस्प हो सकता है: http://seanjtaylor.com/post/39573264781/the-statistics-software-signal

pps: या इस पद से यह उद्धरण :

मैं अपने सभी शोधों के लिए R और Python का उपयोग करता हूं (आवश्यकतानुसार Rcpp या Cython के साथ), लेकिन मैं C या C ++ में लिखने से बचूंगा यदि मैं इससे बच सकता हूं। आर एक अद्भुत भाषा है, जो उपयोगकर्ताओं के अविश्वसनीय समुदाय के कारण बड़े हिस्से में है। यह सांख्यिकीविदों द्वारा बनाया गया था, जिसका अर्थ है कि डेटा विश्लेषण भाषा के बहुत दिल में स्थित है; मैं इसे भाषा की एक प्रमुख विशेषता मानता हूं और एक बड़ा कारण है कि इसे जल्द ही किसी भी समय प्रतिस्थापित नहीं किया जाएगा। पायथन आमतौर पर एक बेहतर समग्र भाषा है, खासकर जब आप ऑब्जेक्ट ओरिएंटेशन के साथ कार्यात्मक प्रोग्रामिंग के अपने मिश्रण पर विचार करते हैं। Scipy / Numpy, Pandas, औरystsmodels के साथ संयुक्त, यह एक शक्तिशाली संयोजन प्रदान करता है। लेकिन पायथन में अभी भी सांख्यिकीविदों / गणितज्ञों के एक गंभीर समुदाय का अभाव है।


3
यह कहना कि R, Python से अधिक मजबूत है, क्या आपका मतलब Python + numpy / blaze + scipy , या सादा अजगर है?
9000

5
मेरा मतलब है कि अजगर + सुन्न हाँ, अन्यथा विकल्प और भी आसान होगा। मुझे लगता है कि बुनियादी कार्यों के संदर्भ में, सरणियों और सॉर्ट पर संचालन, आर और पायथन + सुन्न बहुत तुलनीय हैं। यह सांख्यिकीय कार्यों के बहुत बड़े पुस्तकालय में है जिसका आर को फायदा है। इसके अलावा, matplotlib ggplot2 जितना अच्छा नहीं लगता है, लेकिन मैंने उतना matplotlib का उपयोग नहीं किया है।
पॉल हेमस्ट्रा

उस ने कहा, मुझे लगता है कि पायथन + संख्या + स्कपी + स्किटिट का चयन रक्षात्मक और उत्कृष्ट पसंद है, यह सिर्फ इतना है कि मुझे लगता है कि आर अभी थोड़ा और उत्कृष्ट है।
पॉल हेमस्ट्रा

@PaulHiemstra - आप अपनी टिप्पणियों में कुछ अच्छे बिंदु बनाते हैं जो शायद आपके उत्तर को बेहतर बनाएंगे - यदि प्रश्न फिर से खोला गया है और आपके पास वह अवसर है।
psr

@psr मैंने अपनी टिप्पणियों में संपादित किया, जाहिरा तौर पर इस प्रश्न को खोलने की आवश्यकता नहीं है कि क्या मैं इसे संपादित करना चाहता हूं (शायद केवल मैं इसे संपादित कर सकता हूं ...)।
पॉल हैमस्ट्रा

36

पृष्ठभूमि: मैं ऑस्टिन में एक स्टार्टअप में एक डेटा वैज्ञानिक हूं, और मैं ग्रेड स्कूल (भौतिकी) से आता हूं। मैं डेटा विश्लेषण के लिए दिन-प्रतिदिन पायथन का उपयोग करता हूं, लेकिन आर का उपयोग थोड़ा करता हूं। मैं C # /। NET और जावा (सिर्फ दैनिक के बारे में) का उपयोग करता हूं, मैंने C ++ का उपयोग धीरे-धीरे स्कूल में किया।

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

आर पर पायथन का मुख्य लाभ यह है कि यह सी परिवार में एक वास्तविक प्रोग्रामिंग भाषा है। यह आसानी से तराजू है, इसलिए यह बोधगम्य है कि आपके सैंडबॉक्स में आपके पास कुछ भी उत्पादन में उपयोग किया जा सकता है। पाइथन में ऑब्जेक्ट ओरिएंटेशन बेक किया गया है, आर के विपरीत जहां यह एक तरह की सोच के बाद लगता है (क्योंकि यह है)। अन्य सामान है जो पायथन भी अच्छी तरह से करता है: थ्रेडिंग और समानांतर प्रसंस्करण बहुत आसान है, और मुझे यकीन नहीं है कि अगर आर में मामला है और पायथन सीखना आपको एक शक्तिशाली स्क्रिप्टिंग टूल भी देता है। पाइथन के लिए वास्तव में अच्छे (मुफ्त) आईडीई भी हैं, अगर आप भुगतान करने के लिए तैयार हैं ($ 100 से कम), तो बेहतर है और मुझे यकीन नहीं है कि यह आर के लिए मामला है - एकमात्र आर आईडीई जिसके बारे में मुझे पता है आर स्टूडियो, जो बहुत अच्छा है, लेकिन मेरे अनुभव में PyDev + ग्रहण जितना अच्छा नहीं है।

मैं इसे एक किकर के रूप में जोड़ूंगा: चूंकि आप अभी भी स्कूल में हैं, इसलिए आपको नौकरियों के बारे में सोचना चाहिए। आप अत्यधिक कुशल आर देवों की तुलना में अत्यधिक कुशल अजगर देवों के लिए अधिक नौकरी पोस्टिंग पाएंगे। ऑस्टिन में, Django देवों के लिए नौकरियां आसमान से गिरने की तरह हैं। यदि आप वास्तव में आर को अच्छी तरह से जानते हैं, तो कुछ स्थान हैं जहां आप उस कौशल (उदाहरण के लिए क्रांति विश्लेषिकी) को भुनाने में सक्षम होंगे, लेकिन बहुत सी दुकानें पायथन का उपयोग करती प्रतीत होती हैं। डेटा विश्लेषण / डेटा विज्ञान के क्षेत्र में भी, अधिक लोग पायथन की ओर रुख करते हैं।

और यह न समझें कि आप उन लोगों के लिए काम कर सकते हैं, जो केवल जावा को जानते हैं (कहते हैं)। वे लोग आपके पायथन कोड को बहुत आसानी से पढ़ पाएंगे। यदि आप R में अपने सभी काम करते हैं तो यह जरूरी नहीं होगा। (यह अनुभव से आता है।)

अंत में, यह सतही लग सकता है, लेकिन मुझे लगता है कि पायथन प्रलेखन और नामकरण परंपराएं (जो धार्मिक रूप से पालन की जाती हैं, यह पता चला है) उपयोगितावादी आर डॉक्टर की तुलना में बहुत अच्छा है। इस पर गरमागरम बहस होगी, मुझे यकीन है, लेकिन पायथन में जोर पठनीयता है। इसका मतलब है कि पायथन कार्यों के तर्क में ऐसे नाम हैं जिन्हें आप पढ़ सकते हैं, और इसका मतलब कुछ है। आर में, तर्क नामों को अक्सर काट दिया जाता है --- मैंने पायथन में यह कम सच पाया है। यह पांडित्यपूर्ण लग सकता है, लेकिन यह मुझे 'xlab' जैसी चीजों को लिखने के लिए पागल कर देता है, जब आप किसी तर्क को आसानी से 'x_label' नाम दे सकते हैं (सिर्फ एक उदाहरण) --- इसका बहुत बड़ा प्रभाव पड़ता है जब आप एक सीखने की कोशिश कर रहे हों नया मॉड्यूल / पैकेज एपीआई। R doc पढ़ना लिनक्स मैन पेजों को पढ़ने जैसा है --- यदि यही आपकी नाव को तैरता है, तो आपके लिए अधिक शक्ति है।

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

  1. आर में स्क्रिप्ट लिखें और सबप्रोसेस मॉड्यूल का उपयोग करके पायथन से उन्हें चलाएं, या
  2. RPy मॉड्यूल स्थापित करें।

पायथन का उपयोग करें कि क्या पायथन अच्छा है और उपरोक्त में से एक के साथ अंतराल में भरें। यह मेरा सामान्य वर्कफ़्लो है --- मैं आमतौर पर चीजों को प्लॉट करने के लिए आर का उपयोग करता हूं, और भारी उठाने के लिए पायथन।

इसलिए योग करने के लिए: पठनीयता पर जोर देने के कारण ("पायथोनिक के लिए खोज Gooogle"), अच्छी, मुफ्त IDEs की उपलब्धता, यह तथ्य कि यह भाषाओं के C परिवार में है, अधिक संभावना है कि आप इसे भुनाने में सक्षम होंगे। निपुणता, और भाषा के सभी बेहतर प्रलेखन-शैली के बारे में, मैं सुझाव दूंगा कि पायथन को अपना जाना चाहिए, और केवल आवश्यक होने पर आर पर भरोसा करना चाहिए।


ठीक है, यह (अब तक) एक स्टैक साइट पर मेरा सबसे लोकप्रिय उत्तर है, और यह # 1 भी नहीं है :) मुझे उम्मीद है कि इसने रास्ते में कुछ लोगों की मदद की है।

किसी भी दर पर, मैं इस क्षेत्र में कई वर्षों के बाद निम्नलिखित निष्कर्ष पर आया हूं:

यह शायद गलत सवाल है।

"मुझे इस विशेष तकनीक को सीखना चाहिए" पूछना एक बुरा सवाल है। क्यों?

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

एक डेटा वैज्ञानिक के रूप में, आपका काम समस्याओं को हल करना है । ज्ञान का एक सा हिस्सा बहुत हमेशा हर सम्मेलन में खो जाता है या आपसे मिलने जाता है - हर "बड़ा डेटा" बात जो मैंने कभी देखी है वह तकनीक पर केंद्रित है, समस्याओं को हल करने पर नहीं। आमतौर पर हल करने वाली वास्तविक समस्या को अंत में कुछ स्लाइड्स पर फिर से लागू किया जाता है:

[टॉक टाइटल = "कूल न्यू स्टार्टअप में डीप लर्निंग"] ... [४५ मिनट का डायग्राम और टेक्नो-बैबेल जिसके दौरान मैं अपने फोन को चेक करता हूं] फिर से] हम अपनी गहरी सीखने की दिनचर्या को चला सकते हैं, [जागो: यही कारण है कि मैं आया!] जिसका विवरण मालिकाना है। प्रशन?

यह एक बुरा प्रभाव देता है कि क्षेत्र तकनीक के बारे में है, और यह सिर्फ सच नहीं है। यदि आप स्काला, या पायथन, या आर में वास्तव में अच्छे हैं, लेकिन आप समस्याओं को सुलझाने में बहुत बुरे हैं तो आप एक घटिया वैज्ञानिक बन जाएंगे

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

इसी तरह, अगर आप नौकरी के लिए इंटरव्यू देने जाते हैं, और वे आपको सिर्फ इसलिए नौकरी पर नहीं रखते हैं क्योंकि आप कुछ प्रोग्रामिंग लैंग्वेज नहीं जानते हैं, तो वह कंपनी बेकार हो जाती है । उन्हें समझ में नहीं आता है कि "डेटा वैज्ञानिक" का क्या मतलब है, और यह शायद आपके लिए बेहतर है अगर यह काम नहीं करता है।

अंत में, यदि आपकी समस्या सुलझाने की क्षमता सीमांत है (अपने आप से ईमानदार रहें), या आप वास्तव में चीजों के तकनीकी पक्ष का आनंद लेते हैं, या सीखने की तकनीक वही है जो आप वास्तव में प्यार करते हैं (फिर से, ईमानदार बनें) तो बहुत सारी तकनीक सीखें। आप हमेशा "डेटा इंजीनियर" प्रकार की भूमिकाएं पा सकते हैं जो आपके कौशल सेट में फिट होती हैं। यह एक बुरी बात नहीं है, डेटा इंजीनियर पहियों को चिकना करते हैं और आपके लिए डेटा वैज्ञानिक के रूप में अपना काम करना संभव बनाते हैं। (अंतर सॉफ्टवेयर आर्किटेक्ट बनाम विकास टीम के समान है।)


3
मैं कहूंगा, हालांकि, अगर मैं एक ट्रेडिंग फ्लोर पर काम कर रहा था, और हेड ट्रेडर मेरे पास ऑप्शन कीमतों के सीएसवी के साथ आया था और चाहता था कि मैं उन्हें एक लीनियर-डिस्ट्रीब्यूशन डिस्ट्रीब्यूशन के साथ फिट करूँ और माध्य और मानक विचलन वापस करूँ, मैं भी पायथन पर विचार नहीं करेगा। मुझे लगता है कि यह आर। में ऐसा करने के लिए कोड की तीन पंक्तियों की तरह है
बेनडूंडी

12

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

मशीन लर्निंग और आँकड़े के बीच स्पष्ट रूप से भारी ओवरलैप है। लेकिन ओवरलैप पहचान नहीं है। मशीन लर्निंग सीएस के विचारों का उपयोग करता है जो कि मैं एक के लिए आर। में लागू नहीं करना चाहता हूं। निश्चित रूप से, आप आर में न्यूनतम फैले हुए पेड़ की गणना कर सकते हैं। हालांकि यह एक बदसूरत गड़बड़ की तरह लग सकता है। मशीन सीखने वाले लोग मान लेंगे कि आपके पास हैश टेबल, बाइनरी सर्च ट्री, और इतने पर आसान पहुँच है। यह आवश्यक है कि जब आवश्यक रूप से एक सामान्य प्रोग्रामिंग भाषा में एक डोमेन विशिष्ट भाषा का उपयोग करने की कोशिश करने की तुलना में, जब आवश्यक हो, एक सांख्यिकी एल्गोरिथ्म को लागू करना मेरे दिमाग में आसान हो।

डेटा विश्लेषण के लिए पायथन के दुष्प्रभाव बहुत अधिक हैं। आप एक ही समय में एक वास्तविक प्रोग्रामिंग भाषा सीखेंगे, जो स्क्रिप्टिंग को संभाल सकता है, बड़े एप्लिकेशन बना सकता है, आदि आर वास्तव में सांख्यिकी समुदाय की एक आला भाषा है, यहां तक ​​कि मैटलैब भी कहीं अधिक व्यापक रूप से उपयोग किया जाता है।

मुझे लगता है, मैं पहले कुछ कागजात देखूंगा, और देखूंगा कि वे किस भाषा में कोड पोस्ट करते हैं। यदि यह R में नहीं है, तो इसका उपयोग न करें।


1
आपका बहुत बहुत धन्यवाद। मुझे निश्चित रूप से चीजों के एमएल पक्ष में अधिक दिलचस्पी है।
the_Cthulhu_Kid

1
बस एक मामूली परिशिष्ट: मुझे यकीन है कि आर कुछ फैशन में भी ऐसा कर सकता है, लेकिन पायथन को सी को कॉल करने की क्षमता के लिए जाना जाता है या कम ओवरहेड के साथ साइथन का उपयोग करके सी में संकलन कार्य करता है। तो आप आमतौर पर कम प्रयास के साथ तेजी से प्राप्त कर सकते हैं, वास्तविक डेटा को देखने के लिए एक प्रमुख विचार। एक और (अंतिम) विदेशी नोट: जावा में कुछ बहुत अच्छी मशीन लर्निंग लाइब्रेरी हैं (जैसे WEKA)। हालाँकि, क्या कूल है आप पायथन से भी कॉल कर सकते हैं, Jython :-) का उपयोग करते हुए
Nir Friedman

7

एक पुराने स्कूल के रूप में (50 से अधिक) वैज्ञानिक जो इन उपकरणों में से एक नंबर का उपयोग करना जारी रखते हैं, मैं अपने दो सेंट जोड़ूंगा। मैंने उन सहयोगियों के साथ काम किया है जो अभी भी फोरट्रान में एक-एक डेटा विश्लेषण नौकरियों से लेकर कोड तक हर कोड लिखते हैं, जो दुनिया के कुछ सुपर कंप्यूटरों पर हावी है। हाल की फोरट्रान बोलियाँ (F90, F95, F2003, F2008) IMHO हैं, जो अस्तित्व में सबसे अच्छी डिज़ाइन की गई कुछ भाषाएँ हैं। उच्च प्रदर्शन कंप्यूटिंग के साथ अनुभव के दशकों ने काफी प्रभावशाली भाषा विकास किया है।

मैंने कई बार केवल पायथन का उपयोग किया है, और इसे फिर से (ज्यादातर ऋषि के कारण) फिर से उपयोग करूंगा लेकिन मैं उन भाषाओं के एक समय परीक्षणित सूट का उपयोग करता हूं जो मेरे लिए अच्छा काम करते हैं। फोरट्रान, सी, पर्ल, आर, और स्कीम (स्क्रिप्टिंग वीएमडी के लिए tcl के साथ)। मुझे आर और फोरट्रान और सी का संयोजन बहुत सहज लगता है। R में ऑब्जेक्ट मॉडल के बारे में की गई अन्य टिप्पणियों के विपरीत, यह जेनेरिक कार्यों और विधि प्रेषण की CLOS अवधारणा पर आधारित, इंटरएक्टिव काम के लिए एक अच्छा ऑब्जेक्ट मॉडल है। जब एक नए पैकेज के साथ अंतःक्रियात्मक रूप से काम करते हैं, तो आप अक्सर कुछ उत्पाद करने के लिए "प्रिंट" और "प्लॉट" जैसे सामान्य कार्यों पर भरोसा कर सकते हैं।

फोरट्रान और सी के लिए एपीआई का उपयोग करना बहुत आसान है। यदि आपका मॉडलिंग और डेटा विश्लेषण के लिए फोरट्रान और सी में काम करता है, तो यह एक बड़ा प्लस है। गतिशील रूप से आर कोड को उत्पन्न करने और इसका मूल्यांकन करने की क्षमता है, जबकि लगभग लिस्प और सी में मैक्रो सिस्टम जितना साफ नहीं है, गतिशील डेटा सेट अप करते समय बहुत उपयोगी है।

वास्तविक डेटा के लिए R की कुछ सीमाओं में मूल्य दृष्टिकोण द्वारा कॉल शामिल है। हालांकि मूल्य से कॉल करने के लिए सीएस कारण हैं, बड़े संख्यात्मक डेटा के साथ वास्तविक विश्व प्रोग्रामिंग को संदर्भ के द्वारा कॉल के कुछ रूप की आवश्यकता होती है (पुराने कोड में फोरट्रान कॉमन ब्लॉक्स का महत्व, या नए कोड में मॉड्यूल डेटा)। पीडीएल (पर्ल डेटा लैंग्वेज) द्वारा अपनाया गया दृष्टिकोण इस संबंध में विशेष रूप से सुरुचिपूर्ण है। (Pdls को अनिवार्य रूप से संदर्भ द्वारा कॉल किया जाता है जब तक आप प्रतिलिपि का अनुरोध नहीं करते हैं। उप-पीडीएल का संदर्भ पैरेंट पीडीएल का एक उप भाग, फोरट्रान या सी प्रदान करने की तुलना में एक दूर क्लीनर सिंटैक्स में है)।

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


1

R की एक प्रमुख विशेषता यह है कि यह संकुल का एक पुस्तकालय है, जितना यह एक प्रोग्रामिंग भाषा है। हर पैकेज लेखक की पहुंच है, सिद्धांत रूप में, हर दूसरे पैकेज में क्या है। यह नाटकीय रूप से फिर से सीखने के लिए, फिर से आविष्कार करने, पुन: दस्तावेज करने की आवश्यकता को कम करता है। यह पैकेज लेखकों और उपयोगकर्ताओं के लिए दोनों पर लागू होता है। बेशक, यह बुनियादी ढांचा लागत पर आता है। पैकेज लेखकों को ऐसे मानकों को समायोजित करना चाहिए जो समय बीतने के साथ तेजी से बारीक हो जाते हैं। इसमें से कुछ उपयोगकर्ताओं के सामने आ सकते हैं।

अजगर, जैसा कि मैं समझता हूं, पैकेज प्रबंधन प्रणाली नहीं है। R का व्यापक R संग्रह नेटवर्क ( http://cran.r-project.org ) के बराबर नहीं है, और R कार्य दृश्यों ( http://cran.csiro.au/web/views/ ) का कोई प्रत्यक्ष समकक्ष नहीं है । इस प्रकार, यह एक हद तक आर के लिए मामला नहीं है, प्रोग्रामर के लिए एक उपकरण जो पहले से ही उपलब्ध है, उस पर बनाने के लिए एक साम्यवादी प्रयास के हिस्से के बजाय अपने दम पर बहुत अधिक काम कर रहा है।

डेटा विश्लेषण और मशीन सीखने के लिए, मांग निश्चित रूप से, बहुत हद तक, पहले से ही मौजूद क्षमताओं का निर्माण और लाभ उठाने के लिए है। अधिक सामान्य प्रोग्रामिंग कार्यों के लिए, पायथन में फायदे हो सकते हैं। क्या आप पायथन सीखने में शामिल प्रयास को सही ठहराने के लिए इस तरह का काम करेंगे?


3
पायथन में एक पैकेज प्रबंधन प्रणाली है जिसे पाइप कहा जाता है। यह मानक पुस्तकालय का हिस्सा नहीं है, लेकिन यह पायथन 3.4 के साथ शुरू होने वाले मानक पायथन के साथ भेज दिया जाएगा, जो अगले महीने (मार्च 2014) में जारी किया जाएगा।
कोडी पाइरसेल

2
व्यापक आर आर्काइव नेटवर्क के पायथन बराबर है PyPI: pypi.python.org/pypi
Wilfred Hughes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.