logging.info("compute clusters") exactClusterer = IterativeSpectralClustering(args.k1, alg="exact", computeSinTheta=True) approxClusterer = IterativeSpectralClustering(args.k1, args.k2, T=args.exactFreq, alg="IASC", computeSinTheta=True) nystromClusterer = IterativeSpectralClustering(args.k1, k3=args.k3, alg="nystrom", computeSinTheta=True) RSvdClusterer = IterativeSpectralClustering(args.k1, k4=args.k4, alg="randomisedSvd", computeSinTheta=True) ningsClusterer = NingSpectralClustering(args.k1, T=args.exactFreq, computeSinTheta=True) exactClusterer.nb_iter_kmeans = 20 approxClusterer.nb_iter_kmeans = 20 nystromClusterer.nb_iter_kmeans = 20 RSvdClusterer.nb_iter_kmeans = 20 ningsClusterer.nb_iter_kmeans = 20 # exactClusterer.computeBound = args.computeBound # computeBound not implemented for exactClusterer approxClusterer.computeBound = args.computeBound # nystromClusterer.computeBound = args.computeBound # computeBound not implemented for nystromClusterer # RSvdClusterer.computeBound = args.computeBound # computeBound not implemented for RSvdClusterer # ningsClusterer.computeBound = args.computeBound # computeBound not implemented for ningsClusterer def getGraphIterator(): return itertools.islice(GrowingContrastGraphIterator(), args.startingIteration, args.endingIteration) for r in range(args.numRepetitions): logging.info("run " + str(r)) if args.runExact: # run with exact eigenvalue decomposition logging.info("Running exact method")
""" for W in graphIterator: graph = SparseGraph(GeneralVertexList(W.shape[0])) graph.setWeightMatrixSparse(W) components = graph.findConnectedComponents() print(graph) L = GraphUtils.shiftLaplacian(graph.getSparseWeightMatrix()) u, V = numpy.linalg.eig(L.todense()) inds = numpy.argsort(u) u = u[inds] k = 20 print((u[0:k]**2).sum()) print((u[k:]**2).sum()) """ numGraphs = len(subgraphIndicesList) k1 = 3 k2 = 3 clusterer = IterativeSpectralClustering(k1, k2) clusterer.nb_iter_kmeans = 20 clusterer.computeBound = True clusterList, timeList, boundList = clusterer.clusterFromIterator(graphIterator, verbose=True) boundList = numpy.array(boundList) print(boundList)
def runExperiment(self): """ Run the selected clustering experiments and save results """ if self.algoArgs.runIASC: logging.debug("Running approximate method") for k2 in self.algoArgs.k2s: logging.debug("k2=" + str(k2)) clusterer = IterativeSpectralClustering(self.algoArgs.k1, k2=k2, T=self.algoArgs.T, alg="IASC", logStep=self.logStep) clusterer.nb_iter_kmeans = 20 clusterer.computeBound = self.algoArgs.computeBound iterator = self.getIterator() clusterList, timeList, boundList = clusterer.clusterFromIterator(iterator, verbose=True) resultsFileName = self.resultsDir + "ResultsIASC_k1=" + str(self.algoArgs.k1) + "_k2=" + str(k2) + "_T=" + str(self.algoArgs.T) + ".npz" self.recordResults(clusterList, timeList, resultsFileName) if self.algoArgs.runExact: logging.debug("Running exact method") clusterer = IterativeSpectralClustering(self.algoArgs.k1, alg="exact", logStep=self.logStep) clusterer.nb_iter_kmeans = 20 iterator = self.getIterator() clusterList, timeList, boundList = clusterer.clusterFromIterator(iterator, verbose=True) resultsFileName = self.resultsDir + "ResultsExact_k1=" + str(self.algoArgs.k1) + ".npz" self.recordResults(clusterList, timeList, resultsFileName) if self.algoArgs.runNystrom: logging.debug("Running Nystrom method") for k3 in self.algoArgs.k3s: logging.debug("k3=" + str(k3)) clusterer = IterativeSpectralClustering(self.algoArgs.k1, k3=k3, alg="nystrom", logStep=self.logStep) clusterer.nb_iter_kmeans = 20 clusterer.computeBound = self.algoArgs.computeBound iterator = self.getIterator() clusterList, timeList, boundList = clusterer.clusterFromIterator(iterator, verbose=True) resultsFileName = self.resultsDir + "ResultsNystrom_k1="+ str(self.algoArgs.k1) + "_k3=" + str(k3) + ".npz" self.recordResults(clusterList, timeList, resultsFileName) if self.algoArgs.runRandomisedSvd: logging.debug("Running randomised SVD method") for k4 in self.algoArgs.k4s: logging.debug("k4=" + str(k4)) clusterer = IterativeSpectralClustering(self.algoArgs.k1, k4=k4, alg="randomisedSvd", logStep=self.logStep) clusterer.nb_iter_kmeans = 20 clusterer.computeBound = self.algoArgs.computeBound iterator = self.getIterator() clusterList, timeList, boundList = clusterer.clusterFromIterator(iterator, verbose=True) resultsFileName = self.resultsDir + "ResultsRandomisedSvd_k1="+ str(self.algoArgs.k1) + "_k4=" + str(k4) + ".npz" self.recordResults(clusterList, timeList, resultsFileName) if self.algoArgs.runEfficientNystrom: logging.debug("Running efficient Nystrom method") for k3 in self.algoArgs.k3s: logging.debug("k3=" + str(k3)) clusterer = IterativeSpectralClustering(self.algoArgs.k1, k3=k3, alg="efficientNystrom", logStep=self.logStep) clusterer.nb_iter_kmeans = 20 clusterer.computeBound = self.algoArgs.computeBound iterator = self.getIterator() clusterList, timeList, boundList = clusterer.clusterFromIterator(iterator, verbose=True) resultsFileName = self.resultsDir + "ResultsEfficientNystrom_k1="+ str(self.algoArgs.k1) + "_k3=" + str(k3) + ".npz" self.recordResults(clusterList, timeList, resultsFileName) if self.algoArgs.runModularity: logging.info("Running modularity clustering") clusterer = IterativeModularityClustering(self.algoArgs.k1) iterator = self.getIterator() clusterList, timeList, boundList = clusterer.clusterFromIterator(iterator, verbose=True) resultsFileName = self.resultsDir + "ResultsModularity_k1=" + str(self.algoArgs.k1) + ".npz" self.recordResults(clusterList, timeList, resultsFileName) if self.algoArgs.runNing: logging.info("Running Nings method") iterator = self.getIterator() clusterer = NingSpectralClustering(self.algoArgs.k1, T=self.algoArgs.T) clusterList, timeList, boundList = clusterer.cluster(iterator, verbose=True) resultsFileName = self.resultsDir + "ResultsNing_k1=" + str(self.algoArgs.k1) + "_T=" + str(self.algoArgs.T) + ".npz" self.recordResults(clusterList, timeList, resultsFileName) logging.info("All done: see you around!")