Skip to content

Commit

Permalink
fix bugs and names
Browse files Browse the repository at this point in the history
  • Loading branch information
parvvaresh committed Aug 31, 2024
1 parent dcfe4c8 commit 4d49b18
Showing 1 changed file with 22 additions and 21 deletions.
43 changes: 22 additions & 21 deletions cluster_ga/cluster.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,46 @@
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
import random
from .genetic import genetic_iris
from .genetic import genetic


class cluster:
def __init__(self, x, y, size_population = 50, goal = 0.9, repeat = 100):
def __init__(self, x : np.array, y : np.array, size_population : int, goal : float, iters : int) -> None:
self.x = x
self.y = y
self.n_samples = x.shape[0]
self.genom = list(np.unique(y))
self.size_population = size_population
self.goal = goal
self.repeat = repeat
self.iters = iters

self.population = []
self.fitness = []


def fit(self):
def fit(self) -> None:
for _ in range(self.size_population):
chromosome = self._creat_random_chromosome()
chromosome = self._CreatRandomChromosome()
self.population.append(genetic(chromosome, self.x))


self.counter = 1

while True :
if self.counter == self.repeat:
if self.counter == self.iters and (self.goal <= self.population[0].fitness_scores and self.population[0].fitness_scores <= 1):
break

self.population = sorted(self.population, key=lambda chromosome : chromosome.fitness_scores, reverse = True)


if self.goal <= self.population[0].fitness_scores <= 1:
break

new_generation = list()

size_best_people = int((10 * self.size_population) / 100)
new_generation.extend(self.population[: size_best_people])
new_generation.extend(self.population[ : size_best_people])

for _ in range(int((90 * self.size_population) / 100)):
parent1 = random.choice(self.population[:50])
parent2 = random.choice(self.population[:50])
parent1 = random.choice(self.population[ : 50])
parent2 = random.choice(self.population[ : 50])
child = parent1.genrate(parent2)
new_generation.append(child)

Expand All @@ -51,15 +54,13 @@ def fit(self):
self.counter += 1
self.show()

def _creat_random_chromosome(self):
chromosome = dict()
for index in range(self.x.shape[0]):
chromosome[index] = random.choice(self.genom)
def _CreatRandomChromosome(self) -> dict:
chromosome = {index: random.choice(self.genom) for index in range(self.n_samples)}
return chromosome

def show(self):
def show(self) -> None:
print(f"loop is : {self.counter}")
print(f"generation: {self.population[0]} \tFitness: {self.population[0].fitness_scores}")
print(f"===== >> generation: {self.population[0]} \tFitness: {self.population[0].fitness_scores}")

def show_plot(self):
def show_plot(self) -> None:
plt.plot(self.fitness)

0 comments on commit 4d49b18

Please sign in to comment.