9

मैंने विभिन्न मानक मशीन सीखने के कार्यों को पूर्ववत करने के लिए अमेज़ॅन लोचदार MapReduce के साथ खुद को स्थापित किया है। मैंने अतीत में स्थानीय मशीन सीखने के लिए पायथन का व्यापक रूप से उपयोग किया है और मुझे जावा नहीं पता है।क्या हडोप के साथ पायथन का उपयोग करने के लिए कोई वितरित मशीन लर्निंग लाइब्रेरी है?

जहां तक ​​मैं कह सकता हूं कि वितरित मशीन सीखने के लिए कोई अच्छी तरह से विकसित पायथन पुस्तकालय नहीं हैं। दूसरी ओर जावा Apache Mahout और क्लौडेरा से हाल ही में Oryx है।

अनिवार्य रूप से ऐसा लगता है कि मुझे दो विकल्पों के बीच चयन करना है। Hadoop streaming या Python wrapper for Hadoop में से एक के साथ उपयोग करने के लिए मेरे स्वयं के एल्गोरिदम समानांतर के माध्यम से स्लोग करें, सभ्य पुस्तकालय मौजूद हैं या जावा पर जहाज कूदें ताकि मैं महौत/ओरीक्स का उपयोग कर सकूं। अपने स्वयं के MapReduce शब्द गणना कोड लिखने और अपना खुद का MapReduce SVM लिखने के बीच अंतर की दुनिया है! this जैसे महान ट्यूटोरियल की सहायता से भी।

मैं नहीं जानता कि जो, समझदार पसंद है तो मेरे सवाल यह है:

ए) वहाँ कुछ अजगर पुस्तकालय मैं चूक गए जो उपयोगी होगा है? यदि नहीं, तो क्या आप जानते हैं कि विकास में कोई है जो निकट भविष्य में उपयोगी होगा?

बी) यदि उपर्युक्त का उत्तर नहीं है तो क्या मेरा समय जावा पर जहाज कूदने में बेहतर होगा?

+0

जांचें: http://stackoverflow.com/questions/4819437/javas-mahout-equivalent-in-python – alexplanation

+0

हमें पूछे जाने वाले प्रश्न ** टूल, लाइब्रेरी या पसंदीदा ऑफ़-साइट संसाधन ** की सिफारिश या ढूंढ रहे हैं स्टैक ओवरफ़्लो के लिए ऑफ़-विषय क्योंकि वे राय वाले उत्तरों और स्पैम को आकर्षित करते हैं। इसके बजाए, [समस्या का वर्णन करें] (http://meta.stackexchange.com/q/139399/) और इसे हल करने के लिए अब तक क्या किया गया है। –

+0

[सॉफ्टवेयर सिफारिशें] पर आगे बढ़ें (http://area51.stackexchange.com/proposals/60887/software-recommendations?referrer=L1kFo5C96mMK8IujJZeI4A2) जब इसे खोला जाएगा। – user

उत्तर

9

मुझे किसी भी लाइब्रेरी के बारे में पता नहीं है जिसे पाइथन में हडोप पर मशीन लर्निंग के लिए मूल रूप से इस्तेमाल किया जा सकता है, लेकिन jpype मॉड्यूल का उपयोग करने का एक आसान समाधान होगा, जो मूल रूप से आपको अपने पायथन कोड के भीतर जावा से बातचीत करने की अनुमति देता है।

उदाहरण के लिए आप इस तरह की एक JVM शुरू कर सकते हैं:

from jpype import * 

jvm = None 

def start_jpype(): 
    global jvm 
    if (jvm is None): 
     cpopt="-Djava.class.path={cp}".format(cp=classpath) 
     startJVM(jvmlib,"-ea",cpopt) 
     jvm="started" 

विषय यहाँ है, जो आपको बताते हैं कि कैसे महावत का उपयोग कर अपने अजगर कोड से KMeans क्लस्टरिंग का उपयोग करने पर एक very good tutorial नहीं है।

4

आप पाइथन का उपयोग करके हडोप स्ट्रीमिंग के लिए Python Hadoop streaming आज़मा सकते हैं।

+0

जैसा कि मैंने ओपी में उल्लेख किया है, हैडूप के साथ अजगर का उपयोग करने के लिए बहुत सारे एफ/डब्ल्यू हैं - लेकिन मैं एक वितरित फैशन में पायथन एमएल के मूल कार्यान्वयन की तलाश में हूं –

1

प्रश्नों के उत्तर:

  1. करने के लिए अपने ज्ञान, नहीं, अजगर मशीन सीखने की एक विस्तृत संग्रह है और मानचित्र-को कम मॉड्यूल लेकिन

    नहीं एमएल + एमआर

  2. मैं हाँ कहेंगे, आप चौखटे

1

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

पहला, और सरल, जिस तरह से इसे काम करने के लिए डिज़ाइन किया गया था। यदि आप विंडोज़ में खेलने के लिए जा रहे हैं तो आप सी # में लिखते हैं, अगर आप अपाचे में वेब सेवा बनाते हैं तो आप PHP का उपयोग करते हैं। जब ईएमआर में आपके चल रहे MapReduce Hadoop, आप जावा का उपयोग करते हैं।

दूसरा, जावा में आपके लिए सभी टूल्स हैं, जैसे एडब्ल्यूएस एसडीके। मैं नियमित रूप से नेटबीन्स, सिगविन (विंडोज़ पर), और एस 3 सीएमडी (साइगविन में) की सहायता से ईएमआर में मैपरेडस नौकरियों को विकसित करता हूं। मैं अपने एमआर जार, और साइगविन + एस 3 सीएमडी बनाने के लिए नेटबीन का उपयोग करता हूं ताकि इसे मेरी एस 3 निर्देशिका में कॉपी किया जा सके। मैं अपने एएमआर क्लस्टर को मेरी कॉन्फ़िगरेशन के साथ लॉन्च करने और अपना जार चलाने के लिए एडब्ल्यूएस एसडीके का उपयोग करके एक प्रोग्राम भी लिखता हूं।

तीसरा, वहाँ कई Hadoop डीबगिंग टूल (आमतौर पर मैक या Linux ओएस की जरूरत है उन्हें हालांकि काम करने के लिए) जावा

के लिए

कृपया Hadoop के लिए Maven के साथ एक नया Netbeans परियोजना बनाने के लिए here देख रहे हैं।

0

इस ब्लॉग पोस्ट Hadoop के साथ काम करने के लिए अजगर चौखटे के एक काफी व्यापक समीक्षा प्रदान करता है:

http://blog.cloudera.com/blog/2013/01/a-guide-to-python-frameworks-for-hadoop/

सहित:

Hadoop स्ट्रीमिंग

mrjob

डुम्बो

hadoopy

pydoop

और इस उदाहरण के साथ अजगर और Hadoop parallelized एमएल की एक काम उदाहरण प्रदान करता है:

http://atbrox.com/2010/02/08/parallel-machine-learning-for-hadoopmapreduce-a-python-example/

-2

ए) कोई

बी) नहीं

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

स्पार्क मेमोरी वितरित ढांचे में एक है जो डेटा को परिमाण के आदेशों से स्मृति की गति में रहने की अनुमति देता है।

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

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