In [14]:
import numpy as np
from snpp.cores.max_balance import greedy
from snpp.utils.matrix import load_sparse_csr, split_train_test
dataset = "epinions"
In [15]:
m = load_sparse_csr('data/{}.npz'.format(dataset))
train_m, test_m = split_train_test(
m,
weights=[0.9, 0.1])
train_m = train_m.tolil()
test_m = test_m.tolil()
In [16]:
train_nz = set(zip(*train_m.nonzero()))
test_nz = set(zip(*test_m.nonzero()))
assert len(train_nz.intersection(test_nz)) == 0
In [17]:
predictable_edges = [(i, j) for i, j in test_nz if (j, i) in train_nz]
correct_n = len(list(filter(lambda ij: test_m[ij[0], ij[1]] == train_m[ij[1], ij[0]], predictable_edges)))
print('accuracy on predictbale edges using undirectionality = {}'.format(correct_n / len(predictable_edges)))