aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/algorithms.py6
-rw-r--r--src/cascade_creation.py7
-rw-r--r--src/convex_optimization.py9
-rw-r--r--src/make_plots.py7
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()