From 589bb6916a56ebc29f1c56b7abf87ee6116ea663 Mon Sep 17 00:00:00 2001 From: linlin Date: Tue, 6 Oct 2020 17:28:41 +0200 Subject: [PATCH] New translations utils.py (French) --- .../gklearn/experiments/papers/PRL_2020/utils.py | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/lang/fr/gklearn/experiments/papers/PRL_2020/utils.py b/lang/fr/gklearn/experiments/papers/PRL_2020/utils.py index 07c82f7..99e2d20 100644 --- a/lang/fr/gklearn/experiments/papers/PRL_2020/utils.py +++ b/lang/fr/gklearn/experiments/papers/PRL_2020/utils.py @@ -6,6 +6,8 @@ Created on Tue Sep 22 11:33:28 2020 @author: ljia """ import multiprocessing +import numpy as np +from gklearn.utils import model_selection_for_precomputed_kernel Graph_Kernel_List = ['PathUpToH', 'WLSubtree', 'SylvesterEquation', 'Marginalized', 'ShortestPath', 'Treelet', 'ConjugateGradient', 'FixedPoint', 'SpectralDecomposition', 'StructuralSP', 'CommonWalk'] @@ -109,4 +111,123 @@ def compute_graph_kernel(graphs, kernel_name, n_jobs=multiprocessing.cpu_count() params['verbose'] = True results = estimator(graphs, **params) + return results[0], results[1] + + +def cross_validate(graphs, targets, kernel_name, output_dir='outputs/', ds_name='synthesized', n_jobs=multiprocessing.cpu_count()): + + param_grid = None + + if kernel_name == 'CommonWalk': + from gklearn.kernels.commonWalkKernel import commonwalkkernel + estimator = commonwalkkernel + param_grid_precomputed = [{'compute_method': ['geo'], + 'weight': np.linspace(0.01, 0.15, 15)}] + + elif kernel_name == 'Marginalized': + from gklearn.kernels.marginalizedKernel import marginalizedkernel + estimator = marginalizedkernel + param_grid_precomputed = {'p_quit': np.linspace(0.1, 0.9, 9), + 'n_iteration': np.linspace(1, 19, 7), + 'remove_totters': [False]} + + elif kernel_name == 'SylvesterEquation': + from gklearn.kernels.randomWalkKernel import randomwalkkernel + estimator = randomwalkkernel + param_grid_precomputed = {'compute_method': ['sylvester'], +# 'weight': np.linspace(0.01, 0.10, 10)} + 'weight': np.logspace(-1, -10, num=10, base=10)} + + 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} + param_grid_precomputed = {'compute_method': ['conjugate'], + 'node_kernels': [sub_kernel], 'edge_kernels': [sub_kernel], + 'weight': np.logspace(-1, -10, num=10, base=10)} + + 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} + param_grid_precomputed = {'compute_method': ['fp'], + 'node_kernels': [sub_kernel], 'edge_kernels': [sub_kernel], + 'weight': np.logspace(-3, -10, num=8, base=10)} + + elif kernel_name == 'SpectralDecomposition': + from gklearn.kernels.randomWalkKernel import randomwalkkernel + estimator = randomwalkkernel + param_grid_precomputed = {'compute_method': ['spectral'], + 'weight': np.logspace(-1, -10, num=10, base=10), + 'sub_kernel': ['geo', 'exp']} + + 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} + param_grid_precomputed = {'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} + param_grid_precomputed = {'node_kernels': [sub_kernel], 'edge_kernels': [sub_kernel], + 'compute_method': ['naive']} + + elif kernel_name == 'PathUpToH': + from gklearn.kernels.untilHPathKernel import untilhpathkernel + estimator = untilhpathkernel + param_grid_precomputed = {'depth': np.linspace(1, 10, 10), # [2], + 'k_func': ['MinMax', 'tanimoto'], # ['MinMax'], # + 'compute_method': ['trie']} # ['MinMax']} + + elif kernel_name == 'Treelet': + from gklearn.kernels.treeletKernel import treeletkernel + estimator = treeletkernel + from gklearn.utils.kernels import polynomialkernel + import functools + gkernels = [functools.partial(gaussiankernel, gamma=1 / ga) + # for ga in np.linspace(1, 10, 10)] + for ga in np.logspace(0, 10, num=11, base=10)] + pkernels = [functools.partial(polynomialkernel, d=d, c=c) for d in range(1, 11) + for c in np.logspace(0, 10, num=11, base=10)] + param_grid_precomputed = {'sub_kernel': pkernels + gkernels} + + elif kernel_name == 'WLSubtree': + from gklearn.kernels.weisfeilerLehmanKernel import weisfeilerlehmankernel + estimator = weisfeilerlehmankernel + param_grid_precomputed = {'base_kernel': ['subtree'], + 'height': np.linspace(0, 10, 11)} + param_grid = {'C': np.logspace(-10, 4, num=29, base=10)} + + if param_grid is None: + param_grid = {'C': np.logspace(-10, 10, num=41, base=10)} + + results = model_selection_for_precomputed_kernel( + graphs, + estimator, + param_grid_precomputed, + param_grid, + 'classification', + NUM_TRIALS=28, + datafile_y=targets, + extra_params=None, + ds_name=ds_name, + output_dir=output_dir, + n_jobs=n_jobs, + read_gm_from_file=False, + verbose=True) + return results[0], results[1] \ No newline at end of file