You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

run_rwalk_symonly.py 3.0 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Sun Dec 23 16:56:44 2018
  5. @author: ljia
  6. """
  7. import functools
  8. from libs import *
  9. import multiprocessing
  10. from gklearn.kernels.rwalk_sym import randomwalkkernel
  11. from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
  12. import numpy as np
  13. dslist = [
  14. {'name': 'Letter-med', 'dataset': '../datasets/Letter-med/Letter-med_A.txt'},
  15. # node nsymb
  16. {'name': 'ENZYMES', 'dataset': '../datasets/ENZYMES_txt/ENZYMES_A_sparse.txt'},
  17. # node symb/nsymb
  18. ]
  19. estimator = randomwalkkernel
  20. param_grid = [{'C': np.logspace(-10, 10, num=41, base=10)},
  21. {'alpha': np.logspace(-10, 10, num=41, base=10)}]
  22. for ds in dslist:
  23. print()
  24. print(ds['name'])
  25. for compute_method in ['conjugate', 'fp']:
  26. if compute_method == 'sylvester':
  27. param_grid_precomputed = {'compute_method': ['sylvester'],
  28. # 'weight': np.linspace(0.01, 0.10, 10)}
  29. 'weight': np.logspace(-1, -10, num=10, base=10)}
  30. elif compute_method == 'conjugate':
  31. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  32. param_grid_precomputed = {'compute_method': ['conjugate'],
  33. 'node_kernels':
  34. [{'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}],
  35. 'edge_kernels':
  36. [{'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}],
  37. 'weight': np.logspace(-1, -10, num=10, base=10)}
  38. elif compute_method == 'fp':
  39. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  40. param_grid_precomputed = {'compute_method': ['fp'],
  41. 'node_kernels':
  42. [{'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}],
  43. 'edge_kernels':
  44. [{'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}],
  45. 'weight': np.logspace(-3, -10, num=8, base=10)}
  46. elif compute_method == 'spectral':
  47. param_grid_precomputed = {'compute_method': ['spectral'],
  48. 'weight': np.logspace(-1, -10, num=10, base=10),
  49. 'sub_kernel': ['geo', 'exp']}
  50. model_selection_for_precomputed_kernel(
  51. ds['dataset'],
  52. estimator,
  53. param_grid_precomputed,
  54. (param_grid[1] if ('task' in ds and ds['task']
  55. == 'regression') else param_grid[0]),
  56. (ds['task'] if 'task' in ds else 'classification'),
  57. NUM_TRIALS=30,
  58. datafile_y=(ds['dataset_y'] if 'dataset_y' in ds else None),
  59. extra_params=(ds['extra_params'] if 'extra_params' in ds else None),
  60. ds_name=ds['name'],
  61. n_jobs=multiprocessing.cpu_count(),
  62. read_gm_from_file=False)
  63. print()

A Python package for graph kernels, graph edit distances and graph pre-image problem.