पायथन का उपयोग कर मशीन लर्निंग


53

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

तो मेरा सवाल है, अधिक क्या हैं

  1. व्यापक
  2. स्केलेबल (100k सुविधाएँ, 10k उदाहरण) और
  3. वहाँ बाहर पायथन में एमएल करने के लिए अच्छी तरह से समर्थित पुस्तकालयों?

मैं विशेष रूप से पाठ वर्गीकरण करने में रुचि रखता हूं, और इसलिए एक ऐसे पुस्तकालय का उपयोग करना चाहूंगा जिसमें सहपाठियों का एक अच्छा संग्रह हो, जिसमें चयन के तरीके (सूचना लाभ, ची-सकरोड आदि), और पाठ पूर्व-प्रसंस्करण क्षमता (उपजी, स्टॉपवार्ड हटाने) , tf-idf आदि)।

पिछले ई-मेल थ्रेड्स के आधार पर यहाँ और अन्य जगहों पर, मैं अब तक PyML, स्किटिट्स-लर्न और ऑरेंज को देख रहा हूँ। मेरे द्वारा उल्लिखित 3 मीट्रिक के संबंध में लोगों के अनुभव कैसे रहे हैं?

कोई अन्य सुझाव?


आपकी टिप्पणियों के लिए बहुत बहुत धन्यवाद। मुझे लगता है कि अब मैं एनएलटीके + के साथ जाऊंगा-सीखूंगा और देखूंगा कि चीजें कहां जाती हैं।
एंडी

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

@ अंब: हां, मैं आर के बारे में बहुत जागरूक हूं, लेकिन चूंकि मुझे वास्तविक टेक्स्ट माइनिंग करने से पहले इतनी "गैर-सांख्यिकी" प्रोग्रामिंग करनी है, मुझे लगता है कि मैं अभी के लिए पायथन से चिपक जाऊंगा।
एंडी

1
आप पायथन और आर। दोनों का उपयोग कर सकते हैं। डेटा प्रोसेसिंग चरणों के बीच परिणाम रखने के लिए डेटाबेस की तरह एक भाषा तटस्थ विधि भंडारण का उपयोग करना है।
फहीम मीठा

आप अपने पायथन कोड से वीका का

जवाबों:


40

स्किकिट-लर्न ऑप्शन के बारे में: 100k (विरल) फीचर्स और 10k सैंपल, मेमोरी में फिट होने के लिए काफी छोटा है, इसलिए स्किट-लर्न (20 न्यूजग्रुप्स डेटासेट के समान आकार) के साथ पूरी तरह से करने योग्य है।

यहाँ एक ट्यूटोरियल है जिसे मैंने पायकोन 2011 में अभ्यास और समाधान के साथ पाठ वर्गीकरण के एक अध्याय के साथ दिया है:

मैंने उस विषय पर भी बात की, जो मैंने PyCon FR में दिए गए संस्करण का एक अद्यतन संस्करण है। यहाँ स्लाइड (और टिप्पणियों में एम्बेडेड वीडियो) हैं:

फ़ीचर चयन के लिए, इस उत्तर पर एक नज़र डालें, जहां सभी उदाहरण scikit- लर्न डॉक्यूमेंटेशन पर आधारित हैं:

हमारे पास अभी तक scikit- सीखने में कोलाजेशन सुविधा निष्कर्षण नहीं है। माध्य समय में ऐसा करने के लिए nltk और nltk-trainer का उपयोग करें:


धन्यवाद। यह एक विशेष रूप से अच्छा तरीका है। मैं कोशिश करुंगा।
एंडी

@ogrisel, पहले तीन लिंक्स के साथ कुछ लिंक रोट (लिंक चार में वीडियो भी गायब है)। यहाँ नए Scikit डोमेन scikit-learn.org का
xtian

14

पाठ के साथ काम करने के संदर्भ में, एनएलटीके पर एक नज़र डालें। बहुत, बहुत अच्छी तरह से समर्थित और प्रलेखित (यदि आप चाहें, तो ऑनलाइन या कागज़ में भी एक पुस्तक है) और आपके द्वारा अपेक्षित प्रीप्रोसेसिंग करेंगे। आप के रूप में अच्छी तरह से Gensim उपयोगी मिल सकता है; जोर वेक्टर अंतरिक्ष मॉडलिंग पर है और यह LSI और LDA के स्केलेबल कार्यान्वयन है (pLSI भी मुझे लगता है) यदि वे रुचि के हैं। यह tf-idf द्वारा चयन भी करेगा - मुझे यकीन नहीं है कि NLTK करता है। मैंने बहुत कठिनाई के बिना ~ 50k के कॉर्पोरा पर इनमें से टुकड़ों का उपयोग किया है।

एनएलटीके: http://www.nltk.org/

गेंसिम: http://nlp.fi.muni.cz/projekty/gensim/

दुर्भाग्य से, आपके प्रश्न के मुख्य जोर के अनुसार, मैं आपके द्वारा निर्दिष्ट विशिष्ट पुस्तकालयों से परिचित नहीं हूं (हालांकि मैंने स्किटिट्स के बिट्स का उपयोग किया है-पहले सीखें)।


3
एनएलटीके के लिए +1। ओलिवियर ग्रिसल, जो मशीन लर्निंग रिसर्च और नेचुरल लैंग्वेज प्रोसेसिंग कर रहे हैं, के पास वेब पर कुछ अच्छे ट्यूटोरियल और स्लाइड हैं। मैं उदाहरण के लिए, एनएलटीके और स्किटिट-लर्न (PyCON FR 2010) के साथ सांख्यिकीय अध्ययन और पाठ वर्गीकरण के बारे में सोच सकता हूं ।
chl

@chi उस ट्यूटोरियल के लिए धन्यवाद, मैं थोड़ा इधर-उधर ताक रहा हूं और ऐसा लगता है कि उसे बहुत सारी अच्छी सामग्री मिल गई है। अपनी स्लाइड्स में हीटमैप के साथ एक उलझन मैट्रिक्स भी प्रदर्शित करता है;)
JMS

9

पायथन में ML पुस्तकालयों की एक विस्तृत श्रृंखला है (साथ ही mloss.org देखें)। हालांकि, मुझे हमेशा यह महसूस होता है कि यह एमएल शोधकर्ताओं के लिए एमएल चिकित्सकों की तुलना में अधिक उपयोग है।

पाइथन के साथ वैज्ञानिक कार्य के लिए Numpy / SciPy और matplotlib उत्कृष्ट उपकरण हैं। यदि आप गणित के अधिकांश फॉर्मूलों में खुद को हैक करने से डरते नहीं हैं, तो आप निराश नहीं होंगे। इसके अलावा, cudamat या gnumpy के साथ GPU का उपयोग करना बहुत आसान है - प्रयोग जो पहले दिन लेते थे अब घंटों या मिनटों में पूरा हो जाते हैं।

ब्लॉक पर नवीनतम बच्चा शायद थीनो है । यह गणितीय अभिव्यक्तियों के लिए एक प्रतीकात्मक भाषा है जो opmitimzations, GPU कार्यान्वयन और über-सुविधा स्वचालित भेदभाव के साथ आती है जो कि ढाल आधारित विधियों के लिए भयानक से कम नहीं है।

इसके अलावा, जहां तक ​​मुझे पता है कि जेएमएस द्वारा उल्लिखित एनएलटीके मूल रूप से नंबर एक खुला स्रोत प्राकृतिक भाषा पुस्तकालय है।

मशीन सीखने के लिए पायथन सही उपकरण है।


8

मुझे ऑरेंज का सुझाव दें

व्यापक

हाँ

स्केलेबल (100k सुविधाएँ, 10k उदाहरण)

हाँ

वहाँ बाहर पायथन में एमएल करने के लिए अच्छी तरह से समर्थित पुस्तकालयों?

हाँ

पुस्तकालय जिसमें सहपाठियों का एक अच्छा संग्रह है, चयन के तरीके (सूचना लाभ, ची-सकरोड आदि)।

ये सभी ऑरेंज में आउट ऑफ बॉक्स काम करते हैं

और टेक्स्ट प्री-प्रोसेसिंग क्षमताओं (स्टेमिंग, स्टॉपवर्ड रिमूवल, tf-idf आदि)।

मैंने कभी भी टेक्स्ट प्रोसेसिंग के लिए ऑरेंज का उपयोग नहीं किया है


ऑरेंज के लिए +1। उनके पास महान दस्तावेज हैं जो दिखाते हैं कि कैसे तेजी से गति प्राप्त करने के लिए, और आप अपने दृश्य-प्रोग्रामिंग जीयूआई का उपयोग कर सकते हैं या पायथन से पुस्तकालयों का उपयोग कर सकते हैं।
जोश हेमन

4

यकीन नहीं है कि यह विशेष रूप से उपयोगी है, लेकिन प्रोग्रामर के लिए एक गाइड है जो पायथन में उपलब्ध आँकड़ों को ऑनलाइन सीख सकता है। http://www.greenteapress.com/thinkstats/

यह मेरे संक्षिप्त स्कैन से बहुत अच्छा लगता है, और यह कुछ मशीन सीखने के तरीकों के बारे में बात करता है, इसलिए यह शुरू करने के लिए एक अच्छी जगह हो सकती है।


3

जाँच करें libsvm


4
libsvm बड़ी संख्या में सुविधाओं और नमूनों को अच्छी तरह से मापता नहीं है। समान लेखकों द्वारा बेहतर तरीके से कामेच्छा का उपयोग करें। रैखिक मॉडल आमतौर पर उच्च आयामी स्थान में पर्याप्त अच्छे होते हैं।
ऑग्रेसेल

दोनों scikits- सीखने और नारंगी के लिए svm इंजन libsvm नहीं है? या वे वास्तव में रैखिक मामले में कामवासना के लिए वापस आते हैं?
जॉन रॉबर्टसन

3

SHOGUN ( OG ) एक बड़े पैमाने पर मशीन लर्निंग टूलबॉक्स है, जो आशाजनक लगता है।



1

जैसा कि @ogrisel हाइलाइट किया गया है, पाइकॉन के लिए scikit-learn सबसे अच्छा मशीन लर्निंग पैकेज में से एक है। यह 100k (विरल) सुविधाओं और 10k नमूनों के रूप में छोटे डेटा-सेट के लिए अच्छी तरह से अनुकूल है, और यहां तक ​​कि 200k पंक्तियों में मामूली बड़े डेटा-सेट के लिए भी हो सकता है। मूल रूप से, कोई भी डेटासेट जो मेमोरी में फिट बैठता है।

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

  1. स्केलेबिलिटी: यदि आपका डेटासेट मेमोरी में फिट हो सकता है, तो स्किकिट-लर्न आपकी पसंद होनी चाहिए। यदि यह मेमोरी में फिट होने के लिए बहुत बड़ा है, तो स्पार्क जाने का रास्ता है। यहां ध्यान देने वाली महत्वपूर्ण बात यह है कि स्पार्क केवल एक वितरित सेटिंग में तेजी से काम करता है।

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

स्पार्क मॉलिब में सुविधाओं को निकालना, बदलना और चयन करना

  1. वर्गीकरण: स्पार्क mllib के सभी प्रमुख एल्गोरिदम कार्यान्वयन हैं जिन्हें आप समय के बहुमत (पाठ वर्गीकरण के लिए अच्छी तरह से काम करने वाले एल्गो सहित) का उपयोग कर रहे हैं। मोलिब के माध्यम से क्या एल्गोरिदम उपलब्ध हैं, इसके विस्तृत अवलोकन के लिए, नीचे दिए गए लिंक को देखें।

Mllib वर्गीकरण और प्रतिगमन

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


0

मुझे नहीं पता कि क्या आप अभी भी कुछ सलाह की तलाश कर रहे हैं (आपने 5 महीने पहले यह सवाल किया था ...)। मैंने अभी यह पुस्तक शुरू की है और अब तक बहुत अच्छी है:

https://www.amazon.com.mx/dp/1491962291/ref=cm_cr_ryp_prd_ttl_sol_3

लेखक एमएल एल्गोरिदम के "पर्दे के पीछे" कुछ सिद्धांत और गणित को कोड, उदाहरण और बताते हैं। मुझे यह बहुत शिक्षाप्रद लग रहा है। आशा है कि यह आपके लिए समान हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.