Browse Source

Add xp.

v0.2.x
jajupmochi 4 years ago
parent
commit
681802a769
2 changed files with 56 additions and 86 deletions
  1. +2
    -86
      gklearn/experiments/papers/PRL_2020/synthesized_graphs_N.py
  2. +54
    -0
      gklearn/experiments/papers/PRL_2020/synthesized_graphs_degrees.py

+ 2
- 86
gklearn/experiments/papers/PRL_2020/synthesized_graphs_N.py View File

@@ -5,8 +5,8 @@ Created on Mon Sep 21 10:34:26 2020


@author: ljia @author: ljia
""" """
Graph_Kernel_List = ['PathUpToH', 'WLSubtree', 'SylvesterEquation', 'Marginalized', 'ShortestPath', 'Treelet', 'ConjugateGradient', 'FixedPoint', 'SpectralDecomposition', 'CommonWalk']
# Graph_Kernel_List = ['CommonWalk', 'Marginalized', 'SylvesterEquation', 'ConjugateGradient', 'FixedPoint', 'SpectralDecomposition', 'ShortestPath', 'StructuralSP', 'PathUpToH', 'Treelet', 'WLSubtree']
from utils import Graph_Kernel_List, compute_graph_kernel


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




def compute_graph_kernel(graphs, kernel_name):
import multiprocessing
if kernel_name == 'CommonWalk':
from gklearn.kernels.commonWalkKernel import commonwalkkernel
estimator = commonwalkkernel
params = {'compute_method': 'geo', 'weight': 0.1}
elif kernel_name == 'Marginalized':
from gklearn.kernels.marginalizedKernel import marginalizedkernel
estimator = marginalizedkernel
params = {'p_quit': 0.5, 'n_iteration': 5, 'remove_totters': False}
elif kernel_name == 'SylvesterEquation':
from gklearn.kernels.randomWalkKernel import randomwalkkernel
estimator = randomwalkkernel
params = {'compute_method': 'sylvester', 'weight': 0.1}
elif kernel_name == 'ConjugateGradient':
from gklearn.kernels.randomWalkKernel import randomwalkkernel
estimator = randomwalkkernel
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
import functools
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
params = {'compute_method': 'conjugate', 'weight': 0.1, 'node_kernels': sub_kernel, 'edge_kernels': sub_kernel}
elif kernel_name == 'FixedPoint':
from gklearn.kernels.randomWalkKernel import randomwalkkernel
estimator = randomwalkkernel
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
import functools
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
params = {'compute_method': 'fp', 'weight': 1e-3, 'node_kernels': sub_kernel, 'edge_kernels': sub_kernel}
elif kernel_name == 'SpectralDecomposition':
from gklearn.kernels.randomWalkKernel import randomwalkkernel
estimator = randomwalkkernel
params = {'compute_method': 'spectral', 'sub_kernel': 'geo', 'weight': 0.1}
elif kernel_name == 'ShortestPath':
from gklearn.kernels.spKernel import spkernel
estimator = spkernel
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
import functools
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
params = {'node_kernels': sub_kernel}
elif kernel_name == 'StructuralSP':
from gklearn.kernels.structuralspKernel import structuralspkernel
estimator = structuralspkernel
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
import functools
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
sub_kernel = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
params = {'node_kernels': sub_kernel, 'edge_kernels': sub_kernel}
elif kernel_name == 'PathUpToH':
from gklearn.kernels.untilHPathKernel import untilhpathkernel
estimator = untilhpathkernel
params = {'depth': 5, 'k_func': 'MinMax', 'compute_method': 'trie'}
elif kernel_name == 'Treelet':
from gklearn.kernels.treeletKernel import treeletkernel
estimator = treeletkernel
from gklearn.utils.kernels import polynomialkernel
import functools
sub_kernel = functools.partial(polynomialkernel, d=4, c=1e+8)
params = {'sub_kernel': sub_kernel}
elif kernel_name == 'WLSubtree':
from gklearn.kernels.weisfeilerLehmanKernel import weisfeilerlehmankernel
estimator = weisfeilerlehmankernel
params = {'base_kernel': 'subtree', 'height': 5}
params['n_jobs'] = multiprocessing.cpu_count()
params['verbose'] = True
results = estimator(graphs, **params)
return results[0], results[1]


def xp_synthesied_graphs_dataset_size(): def xp_synthesied_graphs_dataset_size():
# Generate graphs. # Generate graphs.


+ 54
- 0
gklearn/experiments/papers/PRL_2020/synthesized_graphs_degrees.py View File

@@ -0,0 +1,54 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 21 10:34:26 2020

@author: ljia
"""
from utils import Graph_Kernel_List, compute_graph_kernel


def generate_graphs(degree):
from gklearn.utils.graph_synthesizer import GraphSynthesizer
gsyzer = GraphSynthesizer()
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)
return graphs


def xp_synthesied_graphs_degrees():
# Run and save.
import pickle
import os
save_dir = 'outputs/synthesized_graphs_degrees/'
if not os.path.exists(save_dir):
os.makedirs(save_dir)

run_times = {}
for kernel_name in Graph_Kernel_List:
print()
print('Kernel:', kernel_name)
run_times[kernel_name] = []
for degree in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
print()
print('Degree:', degree)
# Generate graphs.
graphs = generate_graphs(degree)

# Compute Gram matrix.
gram_matrix, run_time = compute_graph_kernel(graphs, kernel_name)
run_times[kernel_name].append(run_time)
pickle.dump(run_times, open(save_dir + 'run_time.' + kernel_name + '.' + str(degree) + '.pkl', 'wb'))
# Save all.
pickle.dump(run_times, open(save_dir + 'run_times.pkl', 'wb'))
return


if __name__ == '__main__':
xp_synthesied_graphs_degrees()

Loading…
Cancel
Save