def loadFileKMeans(file,classNameIndex): k = KMeans(constants.getN()) fileHelper = FileHelper() c1 = KMeansClass(0,"Iris-setosa") c1.setVCenter([4.6,3.0,4.0,0.0]) c2 = KMeansClass(1,"Iris-versicolor") c2.setVCenter([6.8,3.4,4.6,0.7]) k.addClass(c1) k.addClass(c2) try: f = fileHelper.openReadOnlyFile(file) lineas = f.readlines() uMatrix = constants.getKMeansInitializeUMAtrix(len(lineas)) k.setUMatrix(uMatrix) xVector = [] for linea in lineas: xVector = linea.strip("\r\n").split(",") del xVector[classNameIndex-1] xVector = [float(x) for x in xVector] k.addXVector(xVector) return k except: print("Error al leer el fichero")
def k_means(data, sample_to_guess, log_file, tolerance=0.01, b=2): def getKMeansInitializeUMAtrix(xVectorsCount): random.seed() matrix = [] for i in range(xVectorsCount): elem = random.uniform(0, 1) matrix.append(elem) matrix.append(1 - elem) return np.reshape(matrix, (xVectorsCount, 2)) k = KMeans(4) c1 = KMeansClass(0, "Iris-setosa") c1.setVCenter([4.6, 3.0, 4.0, 0.0]) c2 = KMeansClass(1, "Iris-versicolor") c2.setVCenter([6.8, 3.4, 4.6, 0.7]) k.addClass(c1) k.addClass(c2) uMatrix = getKMeansInitializeUMAtrix( len(data['Iris-setosa']) + len(data['Iris-versicolor'])) k.setUMatrix(uMatrix) for x in data['Iris-setosa']: k.addXVector(x) for x2 in data['Iris-versicolor']: k.addXVector(x2) k.doTraining(log_file=log_file, epsilonLimit=tolerance, b=b) prediction = k.clasifyEuclideanDistance(sample_to_guess, log_file) log_file.write("La prediccion para la muestra es {}".format(prediction)) print("La predicción para la muestra es {}".format(prediction)) return prediction