2016-06-25 14 views
2

Pythonの隣接行列でWebサイトのユーザー動作を表現する際に問題があります。 43の異なるWebサイト間のユーザーのやりとりを分析して、どのWebサイトが一緒に使用されているかを調べたいと思います。大きなデータセット用のPythonで隣接行列を作成

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

が、私はこのように隣接行列にウェブサイト間の相互作用を視覚化したいと思います:

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

I

は、与えられたデータセットは以下の構造を有する約13.000.000ラインを持っていますアドバイスに満足しています

答えて

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()) 
関連する問題