Código:
Y bien con esto pego mi código como lo estoy creando.variable = { 0 : { "nombre1" : { "subNombre1" : 0.0 } }, ... }
Código:
La impresión me está dando lo siguientedef entropy(self, column, values ): entropyValue = 0.0 frequency = {} index = 0 data = self.mixColumn(column,values) namesClass = self.getTargetNames(values) for i in data.values(): for dat,val in zip( i.keys(), i.values() ): # Build the first array contrullo mi array if not frequency : frequency[index] = { dat : {val:0.0} } elif not frequency[index].has_key(dat): #if index <= self.objetiveNumberClass : index += 1 frequency[index] = { dat : {val:0.0} } elif not frequency[index][dat].has_key(val): frequency[index] = { dat : {val:0.0} } # creo que aqui viene mi problema if (dat in frequency[index].keys()) and (val in frequency[index][dat].keys()) and (index in frequency.keys()) : frequency[index][dat][val] += 1.0 print frequency return entropyValue
Código:
pero lo que yo quiero es como el primer valor 0 : Alta : no : 2.0 , osea la suma de los valores repetidos{0: {'Alta': {'no': 2.0}}, 1: {'Normal': {'si': 1.0}}, 2: {'Baja': {'no': 1.0}}, 3: {'Normal': {'si': 1.0}}, 4: {'Alta': {'si': 1.0}}, 5: {'Baja': {'si': 1.0}}, 6: {'Alta': {'si': 1.0}}, 7: {'Normal': {'si': 2.0}}, 8: {'Baja': {'no': 1.0}}}
por ejemplo contar si "ALTA" , "no" existen 10 veces que me diera
Código:
Para esto se que debo buscar en el diccionario creado y si existe recuperar su id e incrementarlo en el ultimo paso, pero lamentablemente no encuentro el como, pues no entiendo aun la lógica de python, tengo 3 días usando python por eso me dirijo a ustedes si me pueden explicar como se debería encontrar en un diccionario como el que manejo.{0: {'Alta': {'no': 10.0}}
dejo el código que uso para pruebas
Código:
Sin necesitan más información se las brindare lo más rápido posible, gracias y espero me puedan apoyar.class ID3: def __init__(self): return def getTargetNames(self, column): namesColumns = [] for name in set(column): # i make a list with names of objetive column namesColumns.append(name) self.objetiveNameClass.append(name) # columnComplete={} count = 0 for i in namesColumns: columnComplete[i] = column.count(i) #print columnComplete self.objetiveNumberClass = len(self.objetiveNameClass) #print(len(objetiveColumn)) #print(self.objetiveNumberClass) return namesColumns def mixColumn ( self, column, values): j = 0 mix = {} for i in column: temp = values[j] mix[j] = {i:temp} j += 1 return mix def main(): paColumn = ["Alta","Alta","Normal","Baja","Baja","Baja","Normal","Alta","Alta","Baja","Alta","Normal","Normal","Baja"] objetiveColumn = ['no','no','si','si','si','no','si','no','si','si','si','si','si','no'] ID = ID3() ID.entropy(paColumn,objetiveColumn) if __name__ == '__main__': main()
Un Saludo.