Пример #1
0
    Return:
    -> Valor de coherencia
    """


    suma = 0
    num = 0
    for clu in clustering:
        c = A.get_centroide(clustering[clu])
        for i in clustering[clu]:
            d = distance.euclidean(c,i)
            suma += d*d
            num +=1
    return suma/(num*1.0)

if __name__ == "__main__":
    instancias = A.read_file()
    co_r = []
    co_d = []
    co_p = []
    K = range(2,21) # K = [2..20]
    for k in K:
        print "-------------",k,"-------------"
        res = A.kmeans(k, instancias)
        co_d.append(media([coherencia_diametro(res[0][c]) for c in res[0]]))
        co_r.append(media([coherencia_radio(res[0][c]) for c in res[0]]))
        co_p.append(coherencia_promedio(res[0]))
    plot(K,co_d,"diametro")
    plot(K,co_r,"radio")
    plot(K,co_p,"promedio")
Пример #2
0
    if n == 0:
        dot += "\t"+Nodo[0]+'0 [label="'+Nodo[0]+'"];\n'
    for child in Nodo[1]:
        # escribimos cada arista con los hijos e incrementamos n para evitar repeticiones
        # dado que puede repetirse el nombre en los hijos
        n+=1
        # ######## Id del Nodo       ->  id de su hijo  [ valor del atributo que divide]

        if len(child[1]) == 0:
            dot += "\t"+Nodo[0]+str(m)+" -> "+child[0]+str(n)+' [label="'+child[2]+'"];\n'
            # ######### Id del hijo      [nombre que se va a mostrar]
            dot += "\t"+child[0]+str(n)+' [label="'+child[0]+'"];\n'
            # es una hoja y por tanto una clase le damos un aspecto diferente
            # ademas no mandamos escribir sus hijos
            dot += "\t"+child[0]+str(n)+ '[style="filled",shape=box,fillcolor="cornsilk3", color="red"];\n'
        else:
            dot += "\t"+Nodo[0]+str(m)+" -> "+child[0]+str(n)+' [label="'+child[2]+'"];\n'
            # ######### Id del hijo      [nombre que se va a mostrar]
            dot += "\t"+child[0]+str(n)+' [label="'+child[0]+'"];\n'
            # si no es una hoja lo pintamos
            (d,n)= dotNodo(child,n)
            dot += d
    return (dot,n)


if __name__ == '__main__' : 
    (inst,attr,clas) = A.read_file()
    candidates = [k for k in attr]
    ida = A.id3(inst,attr,clas,candidates)
    print toDOT(ida)