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")
Beispiel #2
0
"""
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!")