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