|
|
@@ -0,0 +1,54 @@ |
|
|
|
#!/usr/bin/env python3 |
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
""" |
|
|
|
Created on Sun Dec 23 16:40:52 2018 |
|
|
|
|
|
|
|
@author: ljia |
|
|
|
""" |
|
|
|
import sys |
|
|
|
import numpy as np |
|
|
|
import networkx as nx |
|
|
|
|
|
|
|
sys.path.insert(0, "../") |
|
|
|
from gklearn.utils.graphfiles import loadDataset |
|
|
|
from gklearn.utils.model_selection_precomputed import compute_gram_matrices |
|
|
|
from gklearn.kernels.structuralspKernel import structuralspkernel |
|
|
|
from sklearn.model_selection import ParameterGrid |
|
|
|
|
|
|
|
from libs import * |
|
|
|
import multiprocessing |
|
|
|
import functools |
|
|
|
from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
# load dataset. |
|
|
|
print('getting dataset and computing kernel distance matrix first...') |
|
|
|
ds_name = 'SYNTHETICnew' |
|
|
|
gkernel = 'structuralspkernel' |
|
|
|
dataset = '../datasets/SYNTHETICnew/SYNTHETICnew_A.txt' |
|
|
|
Gn, y_all = loadDataset(dataset) |
|
|
|
|
|
|
|
for G in Gn: |
|
|
|
G.graph['filename'] = 'graph' + str(G.graph['name']) + '.gxl' |
|
|
|
|
|
|
|
# compute/read Gram matrix and pair distances. |
|
|
|
mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel) |
|
|
|
sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel} |
|
|
|
Kmatrix, run_time = structuralspkernel(Gn, node_label=None, edge_label=None, |
|
|
|
node_kernels=sub_kernels, edge_kernels=sub_kernels, |
|
|
|
parallel=None, # parallel='imap_unordered', |
|
|
|
n_jobs=multiprocessing.cpu_count(), |
|
|
|
verbose=True) |
|
|
|
|
|
|
|
# normalization |
|
|
|
Kmatrix_diag = Kmatrix.diagonal().copy() |
|
|
|
for i in range(len(Kmatrix)): |
|
|
|
for j in range(i, len(Kmatrix)): |
|
|
|
Kmatrix[i][j] /= np.sqrt(Kmatrix_diag[i] * Kmatrix_diag[j]) |
|
|
|
Kmatrix[j][i] = Kmatrix[i][j] |
|
|
|
|
|
|
|
np.savez('results/xp_fit_method/Kmatrix.' + ds_name + '.' + gkernel + '.gm', |
|
|
|
Kmatrix=Kmatrix, run_time=run_time) |
|
|
|
|
|
|
|
print('complete!') |