def run(self, itter):
     bestFitness = np.inf
     bestGen = []
     bestCentroid = None
     for a in range(itter):
         i = 0
         for ant in self.ants:
             ant.init()
             ant.run()
             #print(ant.tabu)
             if( ant.fitness<bestFitness):
                 bestFitness= ant.fitness
                 bestCentroid = ant.centroid
             print ("=========================")
             print ("ant number: "+str(i))
             print ("fitness : " +str(ant.fitness))
             i+=1
         print("=====================================")
         print("Itteration : %s"%(a))
         print("=====================================")
         print("bestfitness : %s"%(bestFitness))
         bestGen.append(bestFitness)
     for i in range(len(bestGen)):
         print("best fitness at generation -%s : %s" %(i, bestGen[i]))
     clust = KMeans(self.data.data,bestCentroid, self.ansdict)
     clust.run(20)
     print("===================================================")
     print("====================K-Means========================")
     print("===================================================")
     print("SSE : %s"%(clust.getaccsse()))
     print("SSE : %s"%(clust.getacc()))
     print("Assigned data : %s"%(clust.assignedNum))
     #print(self.pheromap)
     return self.pheromap
import random
from dataset import Dataset
from KMeans import KMeans

Data = Dataset('nursery.txt')
Data.run()
numCen = 5
centroid = [
    Data.data[random.randrange(0, len(Data.data))].copy()
    for i in range(numCen)
]
Clust = KMeans(Data.data, centroid, 5)
Clust.run(10)
print(Clust.getaccsse())
print(Clust.getacc())
    def Evolutionize(self):
        bestGeneration = []
        bestCentroid = None
        bestFitness = np.inf
        for i in range(self.itter):
            tempBestGen = np.inf
            for j in range(self.populationsize):
                particles = [k for k in range(self.populationsize)
                             if k != j]  #not current
                randomparticle = []
                for a in range(3):
                    ran = random.choice(particles)
                    randomparticle.append(ran)
                    particles.remove(ran)

                a, b, c = randomparticle
                mutant = []
                for z in range(self.centroidNum):
                    mutant.append([])
                    for x in range(self.dimension):
                        #print(len(self.population[a].centroid))
                        #print(len(self.population[a].centroid[z]))
                        tempa = self.population[a].centroid[z][x]
                        tempb = self.population[b].centroid[z][x]
                        tempc = self.population[c].centroid[z][x]
                        temp = tempa - self.mut * (tempb - tempc)
                        mutant[z].append(temp)
                    #temp = [self.population[a].centroid[z][itt] +
                    #        self.mut * (self.population[b].centroid[z][itt]
                    #       - self.population[c].centroid[z][itt]) for itt in range(len(self.population[0].centroid[z])-1)]
                    #print (temp)
                #print(mutant)
                for a in range(len(mutant)):
                    for b in range(len(mutant[a])):
                        mutant[a][b] = np.clip(mutant[a][b], self.bounddown[a],
                                               self.boundup[a])

                crossTruth = [
                    np.random.rand(self.dimension) < self.crossp
                    for a in range(self.centroidNum)
                ]
                #print(crossTruth)

                trial = self.population[j].centroid.copy()
                for a in range(len(crossTruth)):
                    for b in range(len(crossTruth[a])):
                        if (crossTruth[a][b]):
                            trial[a][b] = mutant[a][b]
                temp = self.population[j].getfitness(trial)
                print("=========================")
                print("particle number: " + str(j))
                print("fitness trial : " + str(temp))
                print("self best : " + str(self.population[j].lastfitness))
                #print("%s, %s" %(self.population[j].lastfitness,tempBestGen))
                #print("%s" %(self.population[j].lastfitness<tempBestGen))
                if self.population[j].lastfitness < tempBestGen:
                    #recording best fitness each generation
                    tempBestGen = self.population[j].lastfitness

                if (self.population[j].lastfitness < bestFitness):
                    bestFitness = self.population[j].lastfitness
                    bestCentroid = self.population[j].centroid

                if temp < self.population[j].lastfitness:
                    self.population[j].lastfitness = temp
                    self.population[j].centroid = trial

            bestGeneration.append(tempBestGen)
            print("=====================================")
            print("Itteration : %s" % (i))
            print("=====================================")
            print("bestfitness : %s" % (min(self.fitness)))

        for i in range(len(bestGeneration)):
            print("best fitness at generation -%s : %s" %
                  (i, bestGeneration[i]))
        print("---------------------------------------------------")
        print("Centroid")
        print("---------------------------------------------------")
        for i in range(len(bestCentroid)):
            print("centroid-%s :%s" % (i, bestCentroid[i]))
        clust = KMeans(self.data.data, bestCentroid, self.ansdict)
        clust.run(self.itterkmeans)
        print("===================================================")
        print("====================K-Means========================")
        print("===================================================")
        print("SSE : %s" % (clust.getaccsse()))
        print("Akurasi : %s" % (clust.getacc()))
        print("Assigned data : %s" % (clust.assignedNum))
        print("---------------------------------------------------")
        print("Centroid")
        print("---------------------------------------------------")
        for i in range(len(clust.centroid)):
            print("centroid-%s :%s" % (i, clust.centroid[i]))
        clust.print_Output()
Exemple #4
0
import numpy as np
import pandas as pd

import config
from KMeans import KMeans
from NumpyEncoder import NumpyEncoder

featuresNames = [
    "acousticness", "danceability", "energy", "instrumentalness", "loudness",
    "speechiness", "valence", "tempo"
]

audioFeatures = pd.read_json("json/audioFeatures.json")[featuresNames]

audioFeatures = (audioFeatures - audioFeatures.min()) / \
    (audioFeatures.max() - audioFeatures.min())

X = audioFeatures.values

with open("json/centroids.json") as json_file:
    centroids = json.load(json_file)

km = KMeans(X, config.nb_playlists)
km.centroids = np.array(centroids[config.nb_playlists - 1])
km.run()

print(len(km.idx))

with open("json/indexes.json", "w") as outfile:
    json.dump(km.idx, outfile, cls=NumpyEncoder)
Exemple #5
0
    while(text.lower() != 'p'):
        text = input("Para parar, digite p\n")
    plotter.close()
    

if __name__ == '__main__':
    
    n = 50000
    NGroups = 6

    
    timeVariable = math.log(n, 5) - 1.8
    data = ListOfPoints(n, 2, 100)
    data.points = [[random()*100, random()*100] for i in range(n)]
    kmeans = KMeans(data, NGroups)
    print('Iteração 1')
    kmeans.run()
    plotter = HP(kmeans.dataPoints, kmeans.centroids, kmeans.nearest, 1000 * timeVariable)
    
    try:
        #_thread.start_new_thread(executeCode, (kmeans, timeVariable))
        executeCode(kmeans, timeVariable)
        plotter.show()
        #_thread.start_new_thread(hidePlotterOnDemand, (plotter, 0))
        #plotter.show()
        
    except Exception as e:
        print(e)

    
Exemple #6
0
                data.append([float(p[0]), float(p[1])])
    return np.array(data)


circle = ReadFile('circle.txt')
moon = ReadFile('moon.txt')

while 1:
    s = input(
        "1 : K-Means | 2 : Kernel K-Means | 3 : Spectral clustering | 4 : DBSCAN\n"
    )
    if s == "1":
        t = input("1 : circle | 2 : moon\n")
        if t == "1":
            KC = KMeans("circle", circle, 2)
            KC.run()
            KC = None
        elif t == "2":
            KM = KMeans("moon", moon, 2)
            KM.run()
            KM = None
    elif s == "2":
        t = input("1 : circle | 2 : moon\n")
        if t == "1":
            i = input("1 : original | 2 : initial\n")
            KKC = KernelKMeans('circle', circle, 2, 10, i == "2")
            KKC.run()
            KKC = None
        if t == "2":
            i = input("1 : original | 2 : initial\n")
            KKM = KernelKMeans('moon', moon, 2, 10, i == "2")