diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/algorithms.py | 6 | ||||
| -rw-r--r-- | src/cascade_creation.py | 7 | ||||
| -rw-r--r-- | src/convex_optimization.py | 9 | ||||
| -rw-r--r-- | src/make_plots.py | 7 |
4 files changed, 18 insertions, 11 deletions
diff --git a/src/algorithms.py b/src/algorithms.py index 9ebccf1..0afee24 100644 --- a/src/algorithms.py +++ b/src/algorithms.py @@ -11,7 +11,7 @@ def greedy_prediction(G, cascades): Returns estimated graph from Greedy algorithm in "Learning Epidemic ..." Only works for independent cascade model! """ - G_hat = cascade_creation.InfluenceGraph(max_proba=None) + G_hat = cascade_creation.InfluenceGraph(max_proba=None, min_proba=None) G_hat.add_nodes_from(G.nodes()) for node in G_hat.nodes(): print(node) @@ -60,6 +60,10 @@ def correctness_measure(G, G_hat, print_values=False): """ edges = set(G.edges()) edges_hat = set(G_hat.edges()) + + print(sorted(edges)) + print(sorted(edges_hat)) + fp = len(edges_hat - edges) fn = len(edges - edges_hat) tp = len(edges & edges_hat) diff --git a/src/cascade_creation.py b/src/cascade_creation.py index 39fc531..db0ea7a 100644 --- a/src/cascade_creation.py +++ b/src/cascade_creation.py @@ -9,8 +9,9 @@ class InfluenceGraph(nx.DiGraph): """ networkX graph with mat and logmat attributes """ - def __init__(self, max_proba, *args, **kwargs): + def __init__(self, max_proba=None, min_proba=None, *args, **kwargs): self.max_proba = max_proba + self.min_proba = min_proba super(InfluenceGraph, self).__init__(*args, **kwargs) def erdos_init(self, n, p): @@ -142,8 +143,10 @@ def add_edges_from_proba_vector(G, p_node, node, floor_cstt): Also updates G's mat matrix """ floor_parent = np.nonzero(p_node*(p_node > floor_cstt)) + print(floor_parent) for parent in floor_parent[0]: - G.add_edge(parent, node) + #SOMEHOW THERE WAS A BUG HERE! + G.add_edge(node, parent) #TODO: update G's mat matrix return G diff --git a/src/convex_optimization.py b/src/convex_optimization.py index 163b6d5..0fda456 100644 --- a/src/convex_optimization.py +++ b/src/convex_optimization.py @@ -101,7 +101,7 @@ def diff_and_opt(M_val, w_val, f_x, f_xz): #cvxopt.solvers.options['feastol'] = 2e-5 #cvxopt.solvers.options['abstol'] = 2e-5 #cvxopt.solvers.options['maxiters'] = 100 - cvxopt.solvers.options['show_progress'] = True + cvxopt.solvers.options['show_progress'] = False try: theta = cvxopt.solvers.cp(F, G, h)['x'] except ArithmeticError: @@ -120,16 +120,15 @@ def test(): """ lbda = .001 G = cascade_creation.InfluenceGraph(max_proba=.9) - G.erdos_init(n=100, p = .3) + G.erdos_init(n=20, p = .3) A = cascade_creation.generate_cascades(G, .1, 1000) - M_val, w_val = cascade_creation.icc_matrixvector_for_node(A, 0) + M_val, w_val = cascade_creation.icc_matrixvector_for_node(A, 2) #Type lasso if 1: f_x, f_xz = type_lasso(lbda) p_vec, _ = diff_and_opt(M_val, w_val, f_x, f_xz) - print(p_vec) - print(G.mat) + print(G.mat[2]) #Sparse recovery if 0: diff --git a/src/make_plots.py b/src/make_plots.py index c1cafe7..4a952d1 100644 --- a/src/make_plots.py +++ b/src/make_plots.py @@ -31,13 +31,14 @@ def test(): """ unit test """ - G = cascade_creation.InfluenceGraph(max_proba=.8) - G.erdos_init(n=30, p=.2) + G = cascade_creation.InfluenceGraph(max_proba=1, min_proba=.2) + G.erdos_init(n=50, p=.2) A = cascade_creation.generate_cascades(G, p_init=.1, n_cascades=1000) G_hat = algorithms.recovery_passed_function(G, A, passed_function=convex_optimization.type_lasso, - floor_cstt=.001, lbda=.0001) + floor_cstt=.1, lbda=.001) algorithms.correctness_measure(G, G_hat, print_values=True) + print(G.mat) if __name__=="__main__": test() |
