def leerFichero(self, nombre_fichero): f = codecs.open(nombre_fichero, "r", "utf-8") #instancias al estilo WEKA instances = Instances() primeraLinea = f.readline() cadenasLinea = re.split(r'\t|\n|\r| ', 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): #print filter(lambda x: x in string.printable, tokens[i]) instance.addElement(tokens[i]) #print tokens[numeroEntradas] instance.addElement(tokens[numeroEntradas]) instances.addInstance(instance) f.close() return instances
def leerFichero(self, nombre_fichero): f = open(nombre_fichero,'r') instances = Instances() #espera @RELATION nombre #espera tambien @ATTRIBUTE #espera tambien @data i = 0 while True: linea = f.readline() tokens = re.split(self.delimiters, linea) if len(tokens) > 1: if tokens[0] == '@RELATION': continue elif tokens[0] == '@ATTRIBUTE': if tokens[1] == 'class': for indice in range(2, len(tokens)): if tokens[indice] != '': instances.addClase(tokens[indice]) elif tokens[2] == 'REAL': instances.addColumna(tokens[1], tokens[2]) continue else: instances.addColumna(tokens[1], 'NOMINAL') continue elif tokens[0] == '@DATA': print '@DATA' break i = i+1 if i > 100: print 'Error de fichero' return None for linea in iter(lambda: f.readline(), ''): tokens = self.privateLimpiaVacioTokens(re.split(self.delimiters, linea)) longitud = len(tokens) if longitud > 1: #por ahora solo lee reales instance = Instance() for i in range(0, longitud - 1): instance.addElement(float(tokens[i])) instance.addElement(tokens[longitud - 1]) instances.addInstance(instance) f.close() return instances
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 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 = InstanceMatriz() #se anyaden las entradas del perceptron for i in range(0, numeroEntradas): instance.addElement(float(tokens[i])) #solo funcionara con salidas numericas for i in range(numeroEntradas, numeroEntradas + numeroClases): instance.addElement(float(tokens[i])) instance.generaBipolarVectorObjetivoSalida(numeroClases) instances.addInstance(instance) f.close() return instances
def soloLeerCabecera(self, nombre_fichero): f = open(nombre_fichero,'r') instances = Instances() #espera @RELATION nombre #espera tambien @ATTRIBUTE #espera tambien @data i = 0 while True: linea = f.readline() tokens = re.split(self.delimiters, linea) if len(tokens) > 1: if tokens[0] == '@RELATION': continue elif tokens[0] == '@ATTRIBUTE': if tokens[1] == 'class': for indice in range(2, len(tokens)): if tokens[indice] != '': instances.addClase(tokens[indice]) elif tokens[2] == 'REAL': instances.addColumna(tokens[1], tokens[2]) continue else: instances.addColumna(tokens[1], 'NOMINAL') continue elif tokens[0] == '@DATA': print '@DATA' break i = i+1 if i > 100: print 'Error de fichero' return None f.close() return instances