2016-06-25 16 views
2

Ich habe ein Problem mit der Darstellung des Benutzerverhaltens in einer Adjazenzmatrix in Python. Ich möchte die Benutzerinteraktion zwischen 43 verschiedenen Websites analysieren, um zu sehen, welche Websites zusammen verwendet werden.Erstellen einer Adjazenzmatrix in Python für große Datasets

Die gegebene Datensatz hat über 13.000.000 Zeilen mit folgenden Struktur:

user website 
id1 web1 
id1 web2 
id1 web2 
id2 web1 
id2 web2 
id3 web3 
id3 web2 

Ich mag die Wechselwirkungen zwischen der Website in einer Adjazenzmatrix wie dies sichtbar zu machen:

 web1 web2 web3 
web1 2 2 0 
web2 2 4 1 
web3 0 1 1 

I Bin für irgendeinen Rat

Antwort

5
import scipy.sparse 

data = """ 
id1 web1 
id1 web2 
id1 web2 
id2 web1 
id2 web2 
id3 web3 
id3 web2 
""" 

data = np.array(data.split()).reshape(-1, 2) 
_, i = np.unique(data[:, 0], return_inverse=True) 
_, j = np.unique(data[:, 1], return_inverse=True) 

incidence = scipy.sparse.coo_matrix((np.ones_like(i), (i,j))) 
adjecency = incidence.T * incidence 

print(adjecency.todense())