subgraphIndices = subgraphIndices[0:100] graph = graph.subgraph(subgraphIndices) d = 0.5 #Rewrite edges to have a decay rate of d edges = graph.getAllEdges() for m in range(edges.shape[0]): 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) u = numpy.random.rand(numVertices) L = 0.1*numpy.sum(u) logging.info("Computing max budgeted influence with branch and bound method") influence2 = BABInfluence() inds2 = influence2.maxBudgetedInfluence(P, u, L) logging.info("Best activation: " + str(numpy.sum(numpy.max(P[inds2, :], 0)))) logging.info("Cost: " + str(numpy.sum(u[inds2, :], 0)) + "\n") logging.info("Computing max budgeted influence with greedy method") influence = GreedyInfluence() inds = influence.maxBudgetedInfluence(P, u, L) logging.info("Best activation: " + str(numpy.sum(numpy.max(P[inds, :], 0)))) logging.info("Cost: " + str(numpy.sum(u[inds, :], 0)) + "\n\n") #This is really slow even with 100 vertices - need a better method to cull
#ks = range(10, 100, 10) ks = list(range(10, 310, 10)) maxK = max(ks) noises = [0.05, 0.1, 0.15, 0.2] outputDir = PathDefaults.getOutputDir() + "influence/" lmbda = 0.1 kernel = LinearKernel() alterRegressor = PrimalRidgeRegression(lmbda) egoRegressor = KernelShiftRegression(kernel, lmbda) edgeLearner = EgoEdgeLabelPredictor(alterRegressor, egoRegressor) influence = GreedyInfluence() p = 0.05 cFilename = outputDir + "C.npy" C = numpy.load(cFilename) logging.info("Loaded matrix of coefficients from " + cFilename) classifier = "Ego" for noise in noises: graphFilename = outputDir + "SyntheticExamples_n=" + str(noise) + ".spg" graph = SparseGraph.load(graphFilename) paramsFile = outputDir + classifier + "ParamsLinear_n=" + str(noise) paramsList = edgeLearner.loadParams(paramsFile)
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.")