def get_instance(self, instance_path): name = "" dimension = "" veiculos = "" capacidade = "" demanda = [] data = [] with open(instance_path, 'r', encoding='utf-8') as file: name = file.readline().split(' ')[-1] dimension = int(file.readline().split(' ')[-1]) veiculos = int(file.readline().split(' ')[-1]) capacidade = int(file.readline().split(' ')[-1]) demanda = [] inicio_da_secao_Edge_Weight = 5 file.readline() #DEMAND_SECTION: for i in range(dimension): stringAuxiliar = file.readline() stringAuxiliar2 = ( re.findall('\d+', stringAuxiliar) ) # vai criar uma lista apenas com os valores (removendo os espaços) demanda.append( int(stringAuxiliar2[1]) ) #vai receber apenas o segundo valor na parte de demanda. inicio_da_secao_Edge_Weight += 1 inicio_da_secao_Edge_Weight += 2 file.readline() #linha vazia antes do EDGE WEIGHT SECTION file_type = file.readline().strip() if file_type == 'EDGE_WEIGHT_SECTION': data2 = [[0 for x in range(dimension)] for y in range(dimension) ] #matriz [Dimensao][Dimensao] fop = open(instance_path, "r") arquivo = fop.readlines() for i in range(dimension): stringAuxiliar = arquivo[inicio_da_secao_Edge_Weight] stringAuxiliar2 = (re.findall('\d+', stringAuxiliar)) for j in range(dimension): data2[i][j] = int(stringAuxiliar2[j]) inicio_da_secao_Edge_Weight += 1 data = self.__get_instance(file, dimension) return Instance(name, dimension, veiculos, capacidade, demanda, data, data2)
def get_instance(self, instance_path): instance = None name = "" dimension = "" data = [] with open(instance_path, 'r', encoding='utf-8') as file: name = file.readline().split(' ')[-1] dimension = int(file.readline().split(' ')[-1]) data = [] file_type = file.readline().strip() if file_type == 'EDGE_WEIGHT_SECTION': data = self.__get_instance_teste(file, dimension) elif file_type == 'DISPLAY_DATA_SECTION': data = self.__get_instance_tsp_cup(file, dimension) return Instance(name, dimension, data)
def leerFichero(self, nombre_fichero): f = open(nombre_fichero,'r') #instancias al estilo WEKA instances = Instances() primeraLinea = f.readline() cadenasLinea = re.split(self.delimiters, primeraLinea) numeroEntradas = int(cadenasLinea[0]) numeroClases = int(cadenasLinea[1]) for i in range(0, numeroEntradas): instances.addColumna(str(i), "REAL") for i in range(0, numeroClases): instances.addClase(str(i)) for line in iter(lambda: f.readline(), ''): tokens = self.privateLimpiaVacioTokens(re.split(self.delimiters, line)) #print tokens if len(tokens) <= 0: break #instancia al estilo WEKA instance = Instance() #se anyaden las entradas del perceptron for i in range(0, numeroEntradas): instance.addElement(float(tokens[i])) #transformacion de 1 0 a 0 por ejemplo y 0 1 a 1 #con la finalidad de no usar un array de clases que no tiene sentido en clasificacion #puede tener sentido en un red neuronal, no lo niego j = 0 for i in range(numeroEntradas, numeroEntradas + numeroClases): if tokens[i] == '1': instance.addElement(str(j)) break j += 1 instances.addInstance(instance) f.close() return instances
def loadDataFromFile(fileName, skipRowsWithInvalidFeature=False, defaultValueOfInvalidFeature=1): instances = [] file = open(fileName, 'r').read() lines = file.split('\n') for line in lines: if '?' in line and skipRowsWithInvalidFeature is True: continue row = line.split(',') if row.__len__() == 11: instance = Instance(row[columnId], row[columnFirstFeature:quantityOfFeatures + 1], row[columnCancerClass], defaultValueOfInvalidFeature) instances.append(instance) return instances