コード例 #1
0
 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;
 }
コード例 #2
0
  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;
  }