Skip to content

Commit 681802a

Browse files
committed
Add xp.
1 parent 21b99f4 commit 681802a

File tree

2 files changed

+56
-86
lines changed

2 files changed

+56
-86
lines changed

gklearn/experiments/papers/PRL_2020/synthesized_graphs_N.py

Lines changed: 2 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
66
@author: ljia
77
"""
8-
Graph_Kernel_List = ['PathUpToH', 'WLSubtree', 'SylvesterEquation', 'Marginalized', 'ShortestPath', 'Treelet', 'ConjugateGradient', 'FixedPoint', 'SpectralDecomposition', 'CommonWalk']
9-
# Graph_Kernel_List = ['CommonWalk', 'Marginalized', 'SylvesterEquation', 'ConjugateGradient', 'FixedPoint', 'SpectralDecomposition', 'ShortestPath', 'StructuralSP', 'PathUpToH', 'Treelet', 'WLSubtree']
8+
from utils import Graph_Kernel_List, compute_graph_kernel
9+
1010

1111
def generate_graphs():
1212
from gklearn.utils.graph_synthesizer import GraphSynthesizer
@@ -15,90 +15,6 @@ def generate_graphs():
1515
return graphs
1616

1717

18-
def compute_graph_kernel(graphs, kernel_name):
19-
import multiprocessing
20-
21-
if kernel_name == 'CommonWalk':
22-
from gklearn.kernels.commonWalkKernel import commonwalkkernel
23-
estimator = commonwalkkernel
24-
params = {'compute_method': 'geo', 'weight': 0.1}
25-
26-
elif kernel_name == 'Marginalized':
27-
from gklearn.kernels.marginalizedKernel import marginalizedkernel
28-
estimator = marginalizedkernel
29-
params = {'p_quit': 0.5, 'n_iteration': 5, 'remove_totters': False}
30-
31-
elif kernel_name == 'SylvesterEquation':
32-
from gklearn.kernels.randomWalkKernel import randomwalkkernel
33-
estimator = randomwalkkernel
34-
params = {'compute_method': 'sylvester', 'weight': 0.1}
35-
36-
elif kernel_name == 'ConjugateGradient':
37-
from gklearn.kernels.randomWalkKernel import randomwalkkernel
38-
estimator = randomwalkkernel
39-
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
40-
import functools
41-
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
42-
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
43-
params = {'compute_method': 'conjugate', 'weight': 0.1, 'node_kernels': sub_kernel, 'edge_kernels': sub_kernel}
44-
45-
elif kernel_name == 'FixedPoint':
46-
from gklearn.kernels.randomWalkKernel import randomwalkkernel
47-
estimator = randomwalkkernel
48-
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
49-
import functools
50-
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
51-
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
52-
params = {'compute_method': 'fp', 'weight': 1e-3, 'node_kernels': sub_kernel, 'edge_kernels': sub_kernel}
53-
54-
elif kernel_name == 'SpectralDecomposition':
55-
from gklearn.kernels.randomWalkKernel import randomwalkkernel
56-
estimator = randomwalkkernel
57-
params = {'compute_method': 'spectral', 'sub_kernel': 'geo', 'weight': 0.1}
58-
59-
elif kernel_name == 'ShortestPath':
60-
from gklearn.kernels.spKernel import spkernel
61-
estimator = spkernel
62-
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
63-
import functools
64-
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
65-
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
66-
params = {'node_kernels': sub_kernel}
67-
68-
elif kernel_name == 'StructuralSP':
69-
from gklearn.kernels.structuralspKernel import structuralspkernel
70-
estimator = structuralspkernel
71-
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
72-
import functools
73-
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
74-
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
75-
params = {'node_kernels': sub_kernel, 'edge_kernels': sub_kernel}
76-
77-
elif kernel_name == 'PathUpToH':
78-
from gklearn.kernels.untilHPathKernel import untilhpathkernel
79-
estimator = untilhpathkernel
80-
params = {'depth': 5, 'k_func': 'MinMax', 'compute_method': 'trie'}
81-
82-
elif kernel_name == 'Treelet':
83-
from gklearn.kernels.treeletKernel import treeletkernel
84-
estimator = treeletkernel
85-
from gklearn.utils.kernels import polynomialkernel
86-
import functools
87-
sub_kernel = functools.partial(polynomialkernel, d=4, c=1e+8)
88-
params = {'sub_kernel': sub_kernel}
89-
90-
elif kernel_name == 'WLSubtree':
91-
from gklearn.kernels.weisfeilerLehmanKernel import weisfeilerlehmankernel
92-
estimator = weisfeilerlehmankernel
93-
params = {'base_kernel': 'subtree', 'height': 5}
94-
95-
params['n_jobs'] = multiprocessing.cpu_count()
96-
params['verbose'] = True
97-
results = estimator(graphs, **params)
98-
99-
return results[0], results[1]
100-
101-
10218
def xp_synthesied_graphs_dataset_size():
10319

10420
# Generate graphs.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
Created on Mon Sep 21 10:34:26 2020
5+
6+
@author: ljia
7+
"""
8+
from utils import Graph_Kernel_List, compute_graph_kernel
9+
10+
11+
def generate_graphs(degree):
12+
from gklearn.utils.graph_synthesizer import GraphSynthesizer
13+
gsyzer = GraphSynthesizer()
14+
graphs = gsyzer.unified_graphs(num_graphs=100, num_nodes=20, num_edges=int(10*degree), num_node_labels=0, num_edge_labels=0, seed=None, directed=False)
15+
return graphs
16+
17+
18+
def xp_synthesied_graphs_degrees():
19+
20+
# Run and save.
21+
import pickle
22+
import os
23+
save_dir = 'outputs/synthesized_graphs_degrees/'
24+
if not os.path.exists(save_dir):
25+
os.makedirs(save_dir)
26+
27+
run_times = {}
28+
29+
for kernel_name in Graph_Kernel_List:
30+
print()
31+
print('Kernel:', kernel_name)
32+
33+
run_times[kernel_name] = []
34+
for degree in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
35+
print()
36+
print('Degree:', degree)
37+
38+
# Generate graphs.
39+
graphs = generate_graphs(degree)
40+
41+
# Compute Gram matrix.
42+
gram_matrix, run_time = compute_graph_kernel(graphs, kernel_name)
43+
run_times[kernel_name].append(run_time)
44+
45+
pickle.dump(run_times, open(save_dir + 'run_time.' + kernel_name + '.' + str(degree) + '.pkl', 'wb'))
46+
47+
# Save all.
48+
pickle.dump(run_times, open(save_dir + 'run_times.pkl', 'wb'))
49+
50+
return
51+
52+
53+
if __name__ == '__main__':
54+
xp_synthesied_graphs_degrees()

0 commit comments

Comments
 (0)