Skip to content
Snippets Groups Projects
Commit deabb68e authored by Fize Jacques's avatar Fize Jacques
Browse files

change script for eval mixed model

parent 5235a480
No related branches found
No related tags found
No related merge requests found
# coding = utf-8
import argparse
import time
import pandas as pd
from lib.random import mixed_model_spat_sbm
from lib.erosion_model import eval_erosion_model
from joblib import Parallel,delayed
import networkx as nx
import glob
from tqdm import tqdm
from lib.utils import load_edgelist
parser = argparse.ArgumentParser()
parser.add_argument("nb_nodes",type=int)
parser.add_argument("nb_edges",type=int)
parser.add_argument("nb_com",type=int)
parser.add_argument("alpha",type=float)
parser.add_argument("nb_iterations",type=int)
parser.add_argument('-f', '--features', help='Feature(s) used in the model training', type=str)
parser.add_argument("graph_dir")
parser.add_argument("output_filename")
parser.add_argument("-f", "--format", default="gml", choices=["gexf", "gml", "txt"])
parser.add_argument("-t","--train-frac",default=0.9,type=float)
parser.add_argument("-n","--nb-iteration",default=1,type=int)
parser.add_argument("-v","--verbose",action="store_true")
parser.add_argument("-t","--timeout",default=30,type=int)
args= parser.parse_args()
# COMMAND LINE ARGS VALUES
GRAPH_NODE_NB = args.nb_nodes
GRAPH_EDGE_NB = args.nb_edges
ALPHA = args.alpha
NB_COM = args.nb_com
NB_ITERATION = args.nb_iterations
VERBOSE = args.verbose
FEATURES = set(args.features.split(","))
TIMEOUT = 10#args.timeout
args = parser.parse_args()
fns = sorted(glob.glob(args.graph_dir + "/*." + args.format))
NB_ITERATION = args.nb_iteration
data = []
def evaluate(fn):
if args.format == "txt":
G = load_edgelist(path=fn)
elif args.format == "gml":
G = nx.read_gml(fn)
else:
G = nx.read_gexf(fn)
G = nx.convert_node_labels_to_integers(G)
auc_sbm,auc_spat,auc_our_model = eval_erosion_model(G,NB_ITERATION)
nb_edges = G.size()
nb_nodes = len(G)
nb_com = G.graph["nb_com"]
alpha = G.graph["alpha"]
return [nb_nodes,nb_edges,nb_com,alpha,fn,auc_sbm,auc_spat,auc_our_model]
G = mixed_model_spat_sbm(GRAPH_NODE_NB,GRAPH_EDGE_NB,NB_COM,alpha=ALPHA)
deb = time.time()
data = Parallel(n_jobs=4,backend="multiprocessing")(delayed(evaluate)(fn) for fn in tqdm(fns))
#data =[evaluate(fn) for fn in tqdm(fns)]
print("eval took",time.time()-deb)
print(eval_erosion_model(G,NB_ITERATION))
df = pd.DataFrame(data,columns="nb_nodes nb_edges nb_com alpha fn auc_sbm auc_spat auc_our_model".split())
df.to_csv(args.output_filename,sep="\t")
......@@ -15,8 +15,9 @@ def get_auc_heuristics(G,timeout=60):
try:
auc_spatial = nee.evaluate_baseline(method="spatial_link_prediction",timeout=timeout).test_scores.auroc()
auc_sbm = nee.evaluate_baseline(method="stochastic_block_model",timeout=timeout).test_scores.auroc()
except:
except Exception as e:
print("Could not compute AUC ! ")
print(e)
return auc_sbm,auc_spatial
......
#!/bin/bash
for nb_iteration in 2 3 4 5
do
for feats in "it_probs" "it_probs,pos" "it_probs,centrality" "it_probs,centrality,pos"
do
for alpha in 0 0.2 0.5 0.7 1
do
for nbcom in 2 3 4 5
do
echo "alpha= "$alpha", nb_com= "$nbcom", conf= "$conf", nb_iteration= "$nb_iteration
python eval_mixed_model.py 100 200 $nbcom $alpha $nb_iteration -f $feats
python eval_mixed_model.py 300 600 $nbcom $alpha $nb_iteration -f $feats
done
done
done
done
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment