diff --git a/lang/zh/gklearn/examples/kernels/compute_graph_kernel.py b/lang/zh/gklearn/examples/kernels/compute_graph_kernel.py new file mode 100644 index 0000000..2fe8d52 --- /dev/null +++ b/lang/zh/gklearn/examples/kernels/compute_graph_kernel.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +"""compute_graph_kernel.ipynb + +Automatically generated by Colaboratory. + +Original file is located at + https://colab.research.google.com/drive/17Q2QCl9CAtDweGF8LiWnWoN2laeJqT0u + +**This script demonstrates how to compute a graph kernel.** +--- + +**0. Install `graphkit-learn`.** +""" + +"""**1. Get dataset.**""" + +from gklearn.utils import Dataset + +# Predefined dataset name, use dataset "MUTAG". +ds_name = 'MUTAG' + +# Initialize a Dataset. +dataset = Dataset() +# Load predefined dataset "MUTAG". +dataset.load_predefined_dataset(ds_name) +len(dataset.graphs) + +"""**2. Compute graph kernel.**""" + +from gklearn.kernels import PathUpToH + +# Initailize parameters for graph kernel computation. +kernel_options = {'depth': 3, + 'k_func': 'MinMax', + 'compute_method': 'trie' + } + +# Initialize graph kernel. +graph_kernel = PathUpToH(node_labels=dataset.node_labels, # list of node label names. + edge_labels=dataset.edge_labels, # list of edge label names. + ds_infos=dataset.get_dataset_infos(keys=['directed']), # dataset information required for computation. + **kernel_options, # options for computation. + ) + +print('done.') + +import multiprocessing +import matplotlib.pyplot as plt + +# Compute Gram matrix. +gram_matrix, run_time = graph_kernel.compute(dataset.graphs, + parallel='imap_unordered', # or None. + n_jobs=multiprocessing.cpu_count(), # number of parallel jobs. + normalize=True, # whether to return normalized Gram matrix. + verbose=2 # whether to print out results. + ) +# Print results. +print() +print(gram_matrix) +print(run_time) +plt.imshow(gram_matrix) + +import multiprocessing + +# Compute grah kernels between a graph and a list of graphs. +kernel_list, run_time = graph_kernel.compute(dataset.graphs, # a list of graphs. + dataset.graphs[0], # a single graph. + parallel='imap_unordered', # or None. + n_jobs=multiprocessing.cpu_count(), # number of parallel jobs. + verbose=2 # whether to print out results. + ) +# Print results. +print() +print(kernel_list) +print(run_time) + +import multiprocessing + +# Compute a grah kernel between two graphs. +kernel, run_time = graph_kernel.compute(dataset.graphs[0], # a single graph. + dataset.graphs[1], # another single graph. + verbose=2 # whether to print out results. + ) +# Print results. +print() +print(kernel) +print(run_time) \ No newline at end of file