2013-05-12 11 views
34

में एक विरल मैट्रिक्स से एक घने मैट्रिक्स जनरेट कर रहा है मैं एक SQLite डेटाबेस स्कीमा निम्न प्रकार के शामिल है। numpy अजगर

तरह
(doc1 , term1 ,12) 
(doc1, term 22, 2) 
. 
. 
(docn,term1 , 10) 

इस मैट्रिक्स विरल मैट्रिक्स के रूप में माना जा सकता है के रूप में प्रत्येक दस्तावेज बहुत कुछ शर्तों है कि एक गैर शून्य मान होगा शामिल हैं।

मैं इस विरल मैट्रिक्स से एक घने मैट्रिक्स numpy का उपयोग कर के रूप में मैं कोज्या समानता का उपयोग कर दस्तावेजों के बीच समानता की गणना करने के लिए है कैसे बना होगा।

इस घने मैट्रिक्स एक मेज है कि पहले स्तंभ के रूप में डाक आईडी है और सभी नियमों पहले row.and शेष कोशिकाओं की गिनती में शामिल होंगे के रूप में सूचीबद्ध किया जाएगा की तरह दिखाई देगा।

उत्तर

7

लिया मैं इस समस्या को पांडा का उपयोग कर हल करने के लिए एक विरल मैट्रिक्स कन्वर्ट करने के लिए का एक उदाहरण है। क्योंकि हम दस्तावेज़ आईडी और टर्म आईडी रखना चाहते हैं।

from pandas import DataFrame 

# A sparse matrix in dictionary form (can be a SQLite database). Tuples contains doc_id  and term_id. 
doc_term_dict={('d1','t1'):12, ('d2','t3'):10, ('d3','t2'):5} 

#extract all unique documents and terms ids and intialize a empty dataframe. 
rows = set([d for (d,t) in doc_term_dict.keys()]) 
cols = set([t for (d,t) in doc_term_dict.keys()]) 
df = DataFrame(index = rows, columns = cols) 
df = df.fillna(0) 

#assign all nonzero values in dataframe 
for key, value in doc_term_dict.items(): 
    df[key[1]][key[0]] = value 

print df 

आउटपुट:

t2 t3 t1 
d2 0 10 0 
d3 5 0 0 
d1 0 0 12 
59
from scipy.sparse import csr_matrix 
A = csr_matrix([[1,0,2],[0,3,0]]) 
>>>A 
<2x3 sparse matrix of type '<type 'numpy.int64'>' 
    with 3 stored elements in Compressed Sparse Row format> 
>>> A.todense() 
    matrix([[1, 0, 2], 
      [0, 3, 0]]) 
>>> A.toarray() 
     array([[1, 0, 2], 
      [0, 3, 0]]) 

कि यह कैसे एक घने मैट्रिक्स से scipy

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