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
Пример #2
0
    def creaParticiones(self, data):
        self.particiones = []

        train = np.random.choice(len(data),
                                 len(data) * self.porcentajeTrain // 100,
                                 replace=False)
        test = list(set(range(len(data))) - set(train))
        self.particiones.append(Particion(train, test))
Пример #3
0
    def creaParticiones(self, data):
        if self.numero_particiones > len(data):
            raise ValueError("Hay más folds que datos")

        self.particiones = []

        indices = np.arange(len(data))
        np.random.shuffle(indices)
        indices_particiones = split(indices, self.numero_particiones)

        for indices_test in indices_particiones:
            train = list(set(range(len(data))) - set(indices_test))
            test = list(indices_test)

            self.particiones.append(Particion(train, test))
Пример #4
0
    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
Пример #6
0
    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
Пример #7
0
    def creaParticiones(self, data):
        self.particiones = []

        train = np.random.choice(len(data), len(data), replace=True)
        test = list(set(range(len(data))) - set(train))
        self.particiones.append(Particion(train, test))