public double[][] compute(SingleDTGraph data) { SparseVector[] featureVectors = computeFeatureVectors(data); double[][] kernel = KernelUtils.initMatrix(data.getInstances().size(), data.getInstances().size()); long tic = System.currentTimeMillis(); kernel = KernelUtils.computeKernelMatrix(featureVectors, kernel); compTime += System.currentTimeMillis() - tic; return kernel; }
public SparseVector[] computeFeatureVectors(SingleDTGraph data) { SparseVector[] featureVectors = new SparseVector[data.getInstances().size()]; for (int i = 0; i < featureVectors.length; i++) { featureVectors[i] = new SparseVector(); } init(data.getGraph(), data.getInstances()); WeisfeilerLehmanIterator<DTGraph<StringLabel, StringLabel>> wl = new WeisfeilerLehmanDTGraphIterator(reverse, noDuplicateSubtrees); List<DTGraph<StringLabel, StringLabel>> gList = new ArrayList<DTGraph<StringLabel, StringLabel>>(); gList.add(rdfGraph); long tic = System.currentTimeMillis(); wl.wlInitialize(gList); double weight = 1.0; computeFVs(rdfGraph, instanceVertices, weight, featureVectors, wl.getLabelDict().size() - 1, 0); for (int i = 0; i < iterations; i++) { wl.wlIterate(gList); computeFVs( rdfGraph, instanceVertices, weight, featureVectors, wl.getLabelDict().size() - 1, i + 1); } compTime = System.currentTimeMillis() - tic; if (this.normalize) { featureVectors = KernelUtils.normalize(featureVectors); } return featureVectors; }