#Now assign the percolation decays to the edges for both graphs graph.addEdges(allEdges, y) graph2.addEdges(allEdges, predY) logging.info("min(y)= " + str(numpy.min(y))) logging.info("max(y)= " + str(numpy.max(y))) P = graph.maxProductPaths() P = P + numpy.eye(numVertices) P2 = graph2.maxProductPaths() P2 = P2 + numpy.eye(numVertices) logging.info("Computing max influence for learnt percolations") inds = numpy.array(influence.maxInfluence(P, maxK)) logging.info("Computing max influence for real percolations") inds2 = numpy.array(influence.maxInfluence(P2, maxK)) for j in range(len(ks)): k = ks[j] #print(numpy.sum(numpy.max(P[inds[0:k], :], 0))) influenceErrors[i, j] = numpy.setdiff1d(inds[0:k], inds2[0:k]).shape[0]/float(k) meanInfluenceErrors = numpy.mean(influenceErrors, 0) stdInfluenceErrors = numpy.std(influenceErrors, 0) logging.info(meanInfluenceErrors) logging.info(stdInfluenceErrors) fileName = outputDir + "influenceErrors" + classifier + "_n=" + str(noise)
influenceArray = numpy.zeros((k, 2)) outputDirectory = PathDefaults.getOutputDir() outputDir = outputDirectory + "influence/" for i in range(len(generators)): fileName = outputDir + "FullTransGraph" + str(generators[i]) + ".spg" graph = SparseGraph.load(fileName) numVertices = graph.getNumVertices() logging.info(graph.degreeDistribution()) logging.info("Computing max product paths") #Make sure the diagonal entrices have information 1 P = graph.maxProductPaths() P = P + numpy.eye(numVertices) logging.info("Computing max influence") influence = GreedyInfluence() inds = influence.maxInfluence(P, maxIks) for m in range(len(iks)): ik = iks[m] influenceArray[m, 0, i] = numpy.sum(numpy.max(P[inds[0:ik], :], 0)) influenceArray[m, 1, i] = numpy.sum(numpy.max(P[inds2[0:ik], :], 0)) influenceArray[m, 2, i] = numpy.sum(numpy.max(P[inds3[0:ik], :], 0)) #Now save the results numpy.save(outputDir + "InfluenceArraySW1", influenceArray[:,:,0]) numpy.save(outputDir + "InfluenceArrayER", influenceArray[:,:,1]) logging.info("All done.")
numVertices = graph.getNumVertices() #Rewrite edges to have a decay rate of d edges = graph.getAllEdges() for m in range(edges.shape[0]): d = numpy.random.rand() graph.addEdge(edges[m, 0], edges[m, 1], d) logging.info("Computing max product paths") #Make sure the diagonal entrices have information 1 P = graph.maxProductPaths() P = P + numpy.eye(numVertices) P2 = numpy.array(P != 0, numpy.int32) logging.info("Computing max influence") influence = GreedyInfluence() inds = influence.maxInfluence(P, maxIks) logging.info("Computing Kempes max influence") inds2 = influence.maxInfluence(P2, maxIks) inds3 = numpy.random.permutation(numVertices)[0:maxIks] for m in range(len(iks)): ik = iks[m] influenceArray[m, 0] = numpy.sum(numpy.max(P[inds[0:ik], :], 0)) influenceArray[m, 1] = numpy.sum(numpy.max(P[inds2[0:ik], :], 0)) influenceArray[m, 2] = numpy.sum(numpy.max(P[inds3[0:ik], :], 0)) #Now save the results numpy.save(outputDir + "influenceArraySW2", influenceArray) logging.info("All done.")