2012-12-06 13 views
5

बनाएं मैं वर्तमान में टेक्स्ट वर्गीकृत करने का प्रयास कर रहा हूं। मेरा डेटासेट बहुत बड़ा है और जैसा कि here सुझाया गया है, मुझे एक स्पैर मैट्रिक्स का उपयोग करने की आवश्यकता है। मेरा सवाल अब है, एक स्पैर मैट्रिक्स में तत्व जोड़ने का सही तरीका क्या है? मान लें उदाहरण के लिए मेरे पास एक मैट्रिक्स एक्स है जो मेरा इनपुट है।SciPy NumPy और SciKit-learn, एक स्पैर मैट्रिक्स

X = np.random.randint(2, size=(6, 100)) 

अब यह मैट्रिक्स एक्स एक अंडारे (या ऐसा कुछ) के अंडायर जैसा दिखता है।

अगर मैं

X2 = csr_matrix(X) 

मैं विरल मैट्रिक्स की क्या ज़रूरत है, लेकिन मैं कैसे sparce मैट्रिक्स के लिए एक और तत्व जोड़ सकते हैं? उदाहरण के लिए इस घने तत्व: [1,0,0,0,1,1,1,0, ..., 0,1,0] एक स्पैस वेक्टर के लिए, मैं इसे स्पैस इनपुट मैट्रिक्स में कैसे जोड़ूं?

+2

आपको इसे वास्तव में पढ़ना चाहिए: http://scikit-learn.org/dev/auto_examples/document_classification_20newsgroups.html – zenpoy

+0

यह मेरा दूसरा दिन पाइथन के साथ काम कर रहा है, जो पढ़ने के लिए दूसरे दिन के लिए शीर्ष पर थोड़ा सा है। मैंने पाया कि बीटीडब्ल्यू – Ojtwist

+2

कुछ चीजें बस अपना समय लेती हैं। शायद आपको पाइथन, नम्पी और सिस्पी पर कुछ ट्यूटोरियल करने में कुछ समय निवेश करना चाहिए। उदाहरण के लिए, दूसरे प्रश्न में उत्तर में मैंने आपको कुछ लिंक की ओर इशारा किया, और जेनपॉय ने आपको एक और दिया। मुझे लगता है कि आपने उन लिंक को नहीं पढ़ा है, क्योंकि आपने दूसरे प्रश्न का उत्तर देने के कुछ ही मिनट बाद इस प्रश्न को पोस्ट किया था। – HerrKaputt

उत्तर

14

Scikit सीखने के लिए एक महान प्रलेखन है महान ट्यूटोरियल है कि तुम सच की कोशिश कर रहा से पहले पढ़ना चाहिए साथ (Btw, मैं बहुत नया अजगर, scipy, numpy, scikit ... सब कुछ में हूँ), इसे स्वयं आविष्कार करें। This यह पढ़ने वाला पहला व्यक्ति है, यह बताता है कि पाठ को वर्गीकृत करने के तरीके, चरण-दर-चरण कैसे वर्गीकृत करें।

this अनुभाग में, उन हिस्सों पर अतिरिक्त ध्यान दें जहां वे स्पैस प्रस्तुतियों के बारे में बात करते हैं। आम तौर पर, यदि आप रैखिक कर्नेल के साथ svm का उपयोग करना चाहते हैं और आप बड़ी मात्रा में डेटा, LinearSVC (जो लिबलाइनर पर आधारित है) बेहतर है।

आपके प्रश्न के संबंध में - मुझे यकीन है कि दो स्पैर मैट्रिक्स को जोड़ने के कई तरीके हैं (बीटीडब्ल्यू यह है कि आपको इसे करने के अन्य तरीकों के लिए Google में देखना चाहिए), यहां एक है, लेकिन आपको csr_matrix से coo_matrix में कनवर्ट करें जो स्पैर मैट्रिक्स का अन्य प्रकार है: Is there an efficient way of concatenating scipy.sparse matrices?

संपादित करें: जब दो मैट्रिक्स (या एक मैट्रिक्स और एक सरणी जो एक 1 dimenesional मैट्रिक्स है) सामान्य विचार X1.data और X2.data श्रेणीबद्ध और के मामले में उनके indices और indptr रों (या row और col हेरफेर करने के लिए है श्रृंखलाबद्ध coo_matrix) सही जगहों को इंगित करने के लिए। कुछ अलग-अलग प्रतिनिधित्व विशिष्ट संचालन के लिए बेहतर होते हैं और अन्य परिचालनों के लिए अधिक जटिल होते हैं, आपको csr_matrix पढ़ना चाहिए और देखें कि यह सबसे अच्छा प्रतिनिधित्व है या नहीं। लेकिन मैं वास्तव में आपको ऊपर दिए गए उन ट्यूटोरियल्स से शुरू करने का आग्रह करता हूं।

+1

यदि आप एक * वास्तव में * डेटा के बड़े सेट पर एक एसवीएम फिट करना चाहते हैं, तो 'एसजीडी क्लासिफायर' भी बेहतर है। डिफ़ॉल्ट सेटिंग्स के तहत, यह एक रैखिक एसवीएम अनुमानित करता है। –

संबंधित मुद्दे