मतलाब और पायथन के बीच, सांख्यिकीय विश्लेषण के लिए कौन सी भाषा अच्छी है?


17

मतलाब और पायथन के बीच, सामान्य सांख्यिकीय डेटा विश्लेषण के लिए कौन सी भाषा अच्छी है? पेशेवरों और विपक्ष, पहुंच के अलावा, प्रत्येक के लिए क्या हैं?


2
यह सामुदायिक विकि, IMO होना चाहिए।
शेन

क्या आप यह बताना चाहेंगे कि आप R को क्यों नहीं देख सकते हैं?
डिर्क एडल्डबुलेटेल

@ डर्क: मैंने शायद ही आर के बारे में सुना है। इसके अलावा मैं पायथन जैसी कुछ प्रोग्रामिंग भाषा सीखना चाहता था, और फिर मुझे भी नहीं लगता कि आर कहीं भी अजगर, आईएमओ के करीब है। मुझे आशा है कि यह आपके प्रश्न का उत्तर देगा।

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

भूस्थैतिकता (जिसमें मैंने अपनी पीएचडी की थी) के संदर्भ में, मुझे लगता है कि आर बहुत अच्छी तरह से सुसज्जित है (देखें gstat, geoR आदि)। कम से कम मुझे अजगर में भूस्थैतिक तकनीकों के ऐसे पूर्ण कवरेज के बारे में नहीं पता है। और आर "अजगर के करीब कहीं नहीं" क्यों है? मैंने दोनों का उपयोग किया है और जियोस्टैट के लिए मुझे लगता है कि आर स्पष्ट रूप से बेहतर है।
पॉल हैमस्ट्रा

जवाबों:


29

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

मुझे मतलूब के बारे में क्या पसंद है:

  • मैं इसमें पारंगत हूं।
  • यह संख्यात्मक विश्लेषकों के बीच भाषा है
  • प्रोफाइलिंग टूल बहुत अच्छा है। यही एकमात्र कारण है कि मैं सप्तक के बजाय मतलूब का उपयोग करता हूं।
  • एक फ्रीवेयर क्लोन, ऑक्टेव है, जिसका संदर्भ कार्यान्वयन के साथ अच्छा अनुपालन है।

मतलाब के बारे में मुझे क्या पसंद नहीं है:

  • तीसरे पक्ष (निःशुल्क या अन्यथा) पैकेज और स्क्रिप्ट प्रबंधित करने के लिए एक अच्छी प्रणाली नहीं है। मैथवर्क्स 'केंद्रीय फ़ाइल विनिमय' को नियंत्रित करता है, और ऐड-ऑन पैकेजों की स्थापना बहुत क्लूनी लगती है, आर के पास उत्कृष्ट प्रणाली जैसा कुछ भी नहीं है। इसके अलावा, मैथवर्क्स के पास इस स्थिति में सुधार करने के लिए कोई प्रोत्साहन नहीं है, क्योंकि वे टूलबॉक्स बेचने पर पैसा बनाते हैं, जो फ्रीवेयर पैकेजों के साथ प्रतिस्पर्धा करते हैं;
  • मतलाब में समानांतर गणना के लाइसेंस बेहद महंगे हैं;
  • एम-कोड में से अधिकांश, टूलबॉक्स फ़ंक्शन के कई, और कुछ बिलिन सहित, दक्षता और / या प्रयोज्य की कीमत पर स्पष्ट रूप से सही होने के लिए डिज़ाइन किए गए थे। इसका सबसे चमकदार उदाहरण मतलब का medianकार्य है, जो डेटा का एक प्रकार करता है, फिर मध्य मान लेता है । यह 70 के दशक से गलत एल्गोरिथम रहा है।
  • फ़ाइल को सहेजने के लिए रेखांकन Matlab में सबसे अच्छा है।
  • मुझे पिछले 5 वर्षों में सुधार करने के लिए अपना उपयोगकर्ता अनुभव नहीं मिला है (जब मैंने ओक्टेव के बजाय मतलब का उपयोग करना शुरू किया था), भले ही मैथवर्क्स घंटियाँ और सीटी जोड़ना जारी रखता है। यह इंगित करता है कि मैं उनका लक्षित ग्राहक नहीं हूं, बल्कि वे बिजली उपयोगकर्ताओं के लिए चीजों को बदतर बनाकर बाजार हिस्सेदारी का विस्तार करना चाहते हैं।
  • Matlab में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग करने के लिए अब 2 तरीके हैं, जो कि सबसे अच्छा भ्रमित है। पुरानी शैली का उपयोग करके विरासत कोड कुछ समय तक बना रहेगा।
  • Matlab UI जावा में लिखा गया है, जिसमें मेमोरी प्रबंधन के बारे में अप्रिय विचार हैं।

+1, अच्छे अंक। इस पर: "स्मृति प्रबंधन के बारे में अप्रिय विचार" .. दिलचस्प, क्या आप विस्तृत कर सकते हैं?
आर्स

1
मेरी याद कहीं जा रही है ; Matlab उपयोग के बाहर जावा के साथ मेरा अनुभव यह इंगित करता है कि यह संभावित अपराधी है, और -nojvmमदद करने के लिए प्रकट होता है ...
shabbychef

MATLAB अजीब अंतर्निहित कोड का मेरा पसंदीदा उदाहरण फेरबदल है, जो नए सिरे से बनाए गए यादृच्छिक वेक्टर को छाँटकर लौटाए गए ऑर्डर के साथ डेटा को फिर से व्यवस्थित करता है।

1
@mbq: shuffleएक टूलबॉक्स में हो सकता है, स्टॉक मैटलैब नहीं है। शायद ही कभी बेसिन से भी बदतर हो सकता है randpermजो एक यादृच्छिक वेक्टर के सॉर्ट इंडेक्स देता है। फिर से, यह शायद गलत एल्गोरिथ्म है (मैंने केवल नट-फिशर-येट्स के बारे में यहाँ आँकड़े पर सीखा है। ईए) ..
shabbychef

1
@mbq: इसके बारे में दूसरा अच्छा हिस्सा randpermयह है कि यह बीजारोपण से प्रभावित होता है randn, जबकि नुथ-फिशर-येट्स का एक मैक्सिको संस्करण शायद रैंडन सीड 'आंतरिक' तक नहीं पहुंच सकता है, और शायद शुद्ध शुद्ध संस्करण। बहुत धीमा हो।
shabbychef

11

चलो इसे तीन क्षेत्रों में तोड़ते हैं (मेरे सिर के ऊपर) जहां प्रोग्रामिंग आंकड़ों से मिलती है: डेटा क्रंचिंग, संख्यात्मक दिनचर्या (अनुकूलन और इस तरह) और सांख्यिकीय पुस्तकालय (मॉडलिंग, आदि)।

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

दूसरे पर, Matlab वास्तव में संख्यात्मक कार्य के साथ चमकता है। अनुसंधान समुदाय का एक बहुत का उपयोग करता है और आप कहते हैं के लिए देख रहे हैं, कुछ संकुचित संवेदन में एक कागज से संबंधित एल्गोरिथ्म, आप कर रहे हैं अब तक अधिक मैटलैब में एक कार्यान्वयन को खोजने के लिए की संभावना है। दूसरी ओर, Matlab वैज्ञानिक कंप्यूटिंग के PHP की तरह है - यह सूर्य के नीचे सब कुछ के लिए एक समारोह होने का प्रयास करता है। यदि आप एक प्रोग्रामिंग भाषा geek हैं, तो परिणामी सौंदर्यशास्त्र और वास्तुकला पागल हो रहे हैं, लेकिन उपयोगितावादी शब्दों में, यह काम हो जाता है। इसमें से बहुत से Numpy / Scipy के उदय के साथ कम निर्भर हो गए हैं, आप केवल Python के लिए उपलब्ध अनुकूलन और मशीन लर्निंग लाइब्रेरी ढूंढ सकते हैं। C के साथ इंटरफैसिंग लगभग किसी भी भाषा में आसान है।

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


मतलाब में सांख्यिकी टूलबॉक्स काफी मजेदार हैं। क्या आर के लिए कुछ ऐसा ही है, जहां उदाहरण के लिए आप जल्दी से अलग-अलग फ़ंक्शन फिट (प्रतिगमन) का एक गुच्छा आज़मा सकते हैं?
एलेक्स आर।

6

मैं 10+ वर्षों से एक avid Matlab उपयोगकर्ता भी रहा हूं। उन वर्षों के लिए मेरे पास अपने काम के लिए बनाए गए टूलबॉक्स से परे काम करने का कोई कारण नहीं था। यद्यपि एक टूलबॉक्स के लिए कई फ़ंक्शन बनाए गए थे, मुझे अक्सर त्वरित टर्नअराउंड विश्लेषण के लिए एल्गोरिदम बनाने की आवश्यकता थी। चूंकि ये एल्गोरिदम अक्सर मैट्रिक्स गणित का उपयोग करते हैं, माटलाब मेरी नौकरी के लिए एक आदर्श उम्मीदवार था। मेरे मैटलैब टूलबॉक्स कोड के अलावा, मेरे समूह के अन्य लोगों ने जावा में बड़े पैमाने पर काम किया क्योंकि भाषाओं के बीच स्पष्ट अंतर था। सालों तक मैं मतलूब से पूरी तरह से खुश था, लेकिन लगभग 3 साल पहले मैंने मतलाब से दूर धीमी गति से संक्रमण शुरू करने का फैसला किया और यह कहते हुए खुशी हुई कि मैंने इसे लगभग एक साल में नहीं खोला है। यहाँ मेरे कदम का कारण हैं:

  • मैं ऑनलाइन और ऑफलाइन कंप्यूटिंग सिस्टम के साथ काम करता हूं, लाइसेंसिंग सिस्टम हमेशा सिरदर्द था। यह हमेशा ऐसा प्रतीत होता है कि जब हमें मतलूब की सबसे अधिक आवश्यकता होती है, तो लाइसेंस समाप्त हो जाएगा या अचानक मुद्दे होंगे। यह हमेशा सिरदर्द था। इसके अलावा, अगर हमें कभी कोड साझा करने की आवश्यकता होती है, और दूसरी पार्टी के पास समान टूलबॉक्स के लिए लाइसेंस नहीं है, तो इससे सिरदर्द पैदा होता है। यह फ्री नहीं है
  • मुझे अक्सर प्रस्तुतियाँ बनाने की आवश्यकता होती है। भले ही माटलैब आंकड़े बनाने के लिए व्यापक उपकरण प्रदान करता है, जो इसे एल्गोरिथ्म डिजाइन के लिए बहुत शक्तिशाली बनाता है, लेकिन आंकड़े को इस तरह से सहेजना कि इसे एक प्रस्तुति में डाला जा सके और अच्छा दिखना कोई सरल कार्य नहीं है। मुझे अक्सर सभी कचरे को हटाने, फोंट को ठीक करने और लाइनों को साफ करने के लिए एडोब इलस्ट्रेटर में एक ईपीएस फाइल डालना पड़ता था। हालाँकि, फ़ाइल एक्सचेंज पर इसके साथ मदद करने के लिए कुछ उपकरण हैं (Export_fig.m)।
  • मुझे अक्सर दूसरों से मतलबी कोड मिलता है। जब ऐसा होता है, मैं लगभग हमेशा इसे फिर से लिखता हूं क्योंकि: उनका एपीआई मेरे डेटा के साथ संगत नहीं है, उनका कोड समझ में नहीं आता है, यह धीमा है, यह आउटपुट नहीं है जो मुझे चाहिए, ... मूल रूप से मतलाब में विकसित होने वाले लोग हैं सॉफ्टवेयर इंजीनियर और मतलाब किसी भी प्रकार के डिजाइन सिद्धांत को प्रोत्साहित नहीं करते हैं।
  • मैं एक पॉवर यूजर हूँ। मुझे टर्मिनल पसंद हैं। मुझे जीयूआई से नफरत है - नफरत है। और जब उन्होंने "विंडोज़" स्टाइल रिबन को जोड़ा, तो मुझे इससे कुछ नफरत हो गई। मूल रूप से जीयूआई और भयानक स्मृति प्रबंधन के लिए उनकी बातों ने मेरे अंतिम बटन को धक्का दिया और मैंने छोड़ने का फैसला किया। -nodesktopविकल्प का उपयोग करना ज्यादातर समय अच्छा होता है, लेकिन क्या यह समस्या है।
  • कार्यों के डिजाइन (ओओ, या कार्यात्मक डिजाइन का उपयोग करके) के लिए कई संभावनाएं हैं, लेकिन कोई भी सही महसूस नहीं करता है, सबसे एडहॉक लगता है। मुझे मतलाब में अच्छे कार्यों को डिजाइन करने से संतुष्टि नहीं मिलती है
  • समुदाय बड़ा है, लेकिन अच्छा कोड साझा करना और ढूंढना आसान नहीं है। फ़ाइल विनिमय इतना बढ़िया नहीं है।

यह मतलाब के साथ मेरी बहुत सारी पकड़ है। यह एक चमकने वाली विशेषता है: कोड को जल्दी से लिखना आसान है, यदि यह वास्तव में आसान है (यदि बदसूरत नहीं है)। हालांकि मैंने इसे छोड़ दिया, और मेरी खोज ने मुझे क्लूजुर के माध्यम से आगे बढ़ाया-> जावास्क्रिप्ट-> पायथन <-> जूलिया; हाँ, मैं पूरी जगह पर रहा हूँ।

  • क्लोजर: सुंदर कार्यात्मक भाषा। क्लोजर का उपयोग करने का मेरा कारण इसकी जावा स्क्रिप्ट की क्षमता थी। हमारे बहुत सारे "बड़े" कोड आधार जावा में हैं, इसलिए यह बहुत मायने रखता है। उस समय बहुत सारे वैज्ञानिक प्रसंस्करण आसानी से उपलब्ध नहीं थे, और न ही दृश्य के साथ बहुत कुछ। लेकिन मुझे लगता है कि यह बदल रहा है।
  • जावास्क्रिप्ट: http://julialang.org/ पर बेंचमार्क देखने के बाद , और चूंकि मुझे निश्चित रूप से डी 3 की विज़ुअलाइज़ेशन क्षमता में दिलचस्पी थी , इसलिए मैंने जावास्क्रिप्ट की कोशिश करने का फैसला किया। जावास्क्रिप्ट आश्चर्यजनक रूप से बहुत तेज है। लेकिन अगर आप वास्तव में खुद से नफरत करना चाहते हैं, तो जावास्क्रिप्ट सीखें।
  • पायथन: पायथन में एक अद्भुत समुदाय है और बहुत सारी महान परियोजनाएं चल रही हैं। आईपीथॉन नोटबुक कई कारणों से अद्भुत है (उनमें से एक पावरपॉइंट में आंकड़ों की सरल प्रतिलिपि / अतीत है)। NumPy / SciPy / Scikit-Learn / Pandas जैसी परियोजनाओं ने वास्तव में पायथन को मज़ेदार और उपयोग में आसान बना दिया है। कई कोर या क्लस्टर पर उपयोग करना इतना आसान है। मैं स्विच के लिए वास्तव में खुश हूं।
  • जूलिया: जूलिया अद्भुत है। खासकर मतलाब यूजर्स के लिए। हालाँकि, यह शैशवावस्था में है, इसलिए बहुत सारे बदलाव हो रहे हैं। पायथन में एक बड़ी कमी यह है कि इसमें मैटलैब की सभी अंतर्निहित कार्यक्षमता नहीं है। निश्चित रूप से NumPy / SciPy उस कार्यक्षमता को लाता है, लेकिन यह बिल्ट-इन नहीं है और आपको इस पर निर्णय लेना है कि शुद्ध पायथन ऑब्जेक्ट्स या संख्यात्मक ऑब्जेक्ट्स हैं या नहीं। जूलिया के पास मूल रूप से वह सब कुछ है जो आप चाहते हैं कि पायथन मैटलैब से आया था। मैं प्रतीक्षा करूंगा, लेकिन भविष्य में मतलाब उपयोगकर्ताओं के लिए यह सबसे अच्छा विकल्प है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.