#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)
Example #2
0
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.")
Example #3
0
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.")