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()
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)
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)
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")