Exemplo n.º 1
0
 def __init__(self, inFolder, filename, algo,pca, whiten, outFolder='../resultData/nucleus',n_iteration =10, **kwargs):
     '''
     pca : None pour pas de PCA, nombre de composantes principales a garder sinon
     dans kwargs je mets les parametres de la methode de clustering
     n'oublions pas qu'il n'y a que 3,000 elements dans le training set donc tout va bien :))
     '''
     assert algo in methods, 'Given algorithm is not implemented'
     #assert sorted(params[algo]) == sorted(kwargs.keys()), 'Parameters for given algorithm are not given'
     self.file=os.path.join(inFolder, filename)
     self.algo = algo
     self.iterations= n_iteration
     self.outFolder = outFolder
     self.outFile = outFile.format(self.algo)
     
     self.parameters = kwargs
     self.pca = pca
     self.whiten= whiten
     
     try:
         self.k = self.parameters["n_clusters"]
     except KeyError:
         self.k = self.parameters["n_components"]
Exemplo n.º 2
0
def plotMoy(outFolder='../resultData/nucleus', show=False):
    f=p.figure(figsize=(24,17))
    
    for i, algo in enumerate(["gaussianmixture", 'mini-batchk-means', 'kernelk-means','spectralclustering']):
        file_=open(os.path.join(outFolder, outFile.format(algo)), 'r')
        resultDict = pickle.load(file_); file_.close()
    
        perClass = []; perCluster = []
        for parameter_set in resultDict:
            currLperClass=[]
            currLperCluster = []
            for morphoClass in resultDict[parameter_set]:
                currLperClass.append(np.mean(resultDict[parameter_set][morphoClass][0]))
                currLperCluster.append(np.mean(resultDict[parameter_set][morphoClass][1]))
            perClass.append(currLperClass)
            perCluster.append(currLperCluster)
            
        
        ax=f.add_subplot(2,2,i)
        for k in range(len(perClass)):
            ax.errorbar(np.mean(perCluster[k]), np.mean(perClass[k]), xerr = np.std(perCluster[k]), yerr=np.std(perClass[k]), 
                            fmt = markers[methods.index(algo)],
                           label = '{}'.format(algo))
        ax.grid(True)
        ax.set_xlim(0,1)
        ax.set_ylim(0,1)
        ax.set_title("Algorithm {}, on average on all morphological classes".format(algo))
        ax.set_xlabel("Nb of class elements in cluster/cluster size")
        ax.set_ylabel("Nb of class elements in cluster/class size")
    if show:
        p.show()
    else:
        p.savefig(os.path.join(outFolder, 'figure_MOY.png'.format(algo)))
    
    f=p.figure(figsize=(24,17))
    for i, algo in enumerate(["gaussianmixture", 'mini-batchk-means', 'kernelk-means','spectralclustering']):
        file_=open(os.path.join(outFolder, outFile.format(algo)), 'r')
        resultDict = pickle.load(file_); file_.close()
    
        perClass = []; perCluster = []
        for parameter_set in resultDict:
            currLperClass=[]
            currLperCluster = []
            for morphoClass in resultDict[parameter_set]:
                currLperClass.append(np.mean(resultDict[parameter_set][morphoClass][2]))
                currLperCluster.append(np.mean(resultDict[parameter_set][morphoClass][3]))
            perClass.append(currLperClass)
            perCluster.append(currLperCluster)
            
        
        ax=f.add_subplot(2,2,i)
        for k in range(len(perClass)):
            ax.errorbar(np.mean(perCluster[k]), np.mean(perClass[k]), xerr = np.std(perCluster[k]), yerr=np.std(perClass[k]), 
                            fmt = markers[methods.index(algo)],
                           label = '{}'.format(algo))
        ax.grid(True)
        ax.set_xlim(0,1)
        ax.set_ylim(0,1)
        ax.set_title("Algorithm {}, on average on all morphological classes".format(algo))
        ax.set_xlabel("Cluster entropy")
        ax.set_ylabel("Class entropy")
    if show:
        p.show()
    else:
        p.savefig(os.path.join(outFolder, 'figure_ENT_MOY.png'.format(algo)))