def generaParticiones(self, instances): #una sola particion particion = Particion() #generar las instacias para la particion instanceTrain = Instances() instanceTest = Instances() # set clases instanceTrain.setClases(instances.getClases()) instanceTest.setClases(instances.getClases()) # set columns instanceTrain.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) instanceTest.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) #generar las instancias listInstances = list(instances.getListInstances()) random.shuffle(listInstances) n_instances = len(listInstances) n_instances_train = int(round(n_instances * self.porcentaje)) n_instances_test = n_instances - n_instances_train #instancias de train for i in range(0, n_instances_train): instanceTrain.addInstance(listInstances[i]) #instancias de test for i in range(n_instances_train, n_instances): instanceTest.addInstance(listInstances[i]) #añadir a la particion las instancias particion.setTrain(instanceTrain) particion.setTest(instanceTest) return particion
def generaParticiones(self, instances, shuffle=True): #una sola particion particion = Particion() #generar las instacias para la particion instanceTrain = Instances() instanceTest = Instances() # set clases instanceTrain.setClases(instances.getClases()) instanceTest.setClases(instances.getClases()) # set columns instanceTrain.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) instanceTest.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) #generar las instancias listInstances = list(instances.getListInstances()) if shuffle: random.shuffle(listInstances) n_instances = len(listInstances) n_instances_train = int(round(n_instances * self.porcentaje)) n_instances_test = n_instances - n_instances_train #instancias de train for i in range(0, n_instances_train): instanceTrain.addInstance(listInstances[i]) #instancias de test for i in range(n_instances_train, n_instances): instanceTest.addInstance(listInstances[i]) #añadir a la particion las instancias particion.setTrain(instanceTrain) particion.setTest(instanceTest) return particion
def generaParticionesProporcional(self, instances, aleatorio = False): #una sola particion particion = Particion() #generar las instacias para la particion instanceTrain = Instances() instanceTest = Instances() # set clases instanceTrain.setClases(instances.getClases()) instanceTest.setClases(instances.getClases()) # set columns instanceTrain.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) instanceTest.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) #generar las instancias listInstances = list(instances.getListInstances()) if aleatorio: random.shuffle(listInstances) n_instances = len(listInstances) n_instances_train = int(round(n_instances * self.porcentaje)) n_instances_test = n_instances - n_instances_train #conteo de instancias en cada clase conteoClases = {} conteoIntroducido = {} listaClases = instances.getClases() for clase in listaClases: conteoClases[clase] = {} conteoClases[clase]['cont'] = 0 conteoClases[clase]['instaces_id'] = [] conteoIntroducido[clase] = 0 i = 0 for instancia in listInstances: clase = instancia.getClase() conteoClases[clase]['cont'] += 1 conteoClases[clase]['instaces_id'].append(i) i+=1 for clase in listaClases: print 'instancias de la clase ' + str(clase) + ': ' + str(conteoClases[clase]['cont']) + ' porcentaje: '+ str(conteoClases[clase]['cont']/float(len(listInstances))) #instancias de train #por cada clase busca se ha de introducir una instancia for i in range(0, n_instances_train): for clase in listaClases: if conteoIntroducido[clase] < ((conteoClases[clase]['cont'] / float(n_instances)) * n_instances_train): identificador = conteoClases[clase]['instaces_id'][conteoIntroducido[clase]] conteoIntroducido[clase] += 1 instanceTrain.addInstance(listInstances[identificador]) #instanceTrain.addInstance(listInstances[i]) #instancias de test for clase in listaClases: desde = conteoIntroducido[clase] hasta = conteoClases[clase]['cont'] for i in range(desde, hasta): identificador = conteoClases[clase]['instaces_id'][i] instanceTest.addInstance(listInstances[identificador]) conteoIntroducido[clase] += 1 #for i in range(n_instances_train, n_instances): # instanceTest.addInstance(listInstances[i]) #añadir a la particion las instancias if aleatorio: instanceTrain.shuffle() particion.setTrain(instanceTrain) particion.setTest(instanceTest) return particion
def generaParticionesProporcional(self, instances): #una sola particion particion = Particion() #generar las instacias para la particion instanceTrain = Instances() instanceTest = Instances() # set clases instanceTrain.setClases(instances.getClases()) instanceTest.setClases(instances.getClases()) # set columns instanceTrain.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) instanceTest.setColumnas(instances.getColumnasList(), instances.getColumnasTipo()) #generar las instancias listInstances = list(instances.getListInstances()) random.shuffle(listInstances) n_instances = len(listInstances) n_instances_train = int(round(n_instances * self.porcentaje)) n_instances_test = n_instances - n_instances_train #conteo de instancias en cada clase conteoClases = {} conteoIntroducido = {} listaClases = instances.getClases() for clase in listaClases: conteoClases[clase] = {} conteoClases[clase]['cont'] = 0 conteoClases[clase]['instaces_id'] = [] conteoIntroducido[clase] = 0 i = 0 for instancia in listInstances: clase = instancia.getClase() conteoClases[clase]['cont'] += 1 conteoClases[clase]['instaces_id'].append(i) i += 1 #instancias de train #por cada clase busca se ha de introducir una instancia for i in range(0, n_instances_train): for clase in listaClases: if conteoIntroducido[clase] < ( (conteoClases[clase]['cont'] / float(n_instances)) * n_instances_train): identificador = conteoClases[clase]['instaces_id'][ conteoIntroducido[clase]] conteoIntroducido[clase] += 1 instanceTrain.addInstance(listInstances[identificador]) #instanceTrain.addInstance(listInstances[i]) #instancias de test for clase in listaClases: desde = conteoIntroducido[clase] hasta = conteoClases[clase]['cont'] for i in range(desde, hasta): identificador = conteoClases[clase]['instaces_id'][i] instanceTest.addInstance(listInstances[identificador]) conteoIntroducido[clase] += 1 #for i in range(n_instances_train, n_instances): # instanceTest.addInstance(listInstances[i]) #añadir a la particion las instancias instanceTrain.shuffle() particion.setTrain(instanceTrain) particion.setTest(instanceTest) return particion