def get_dunn_index(fdist, *clusters): """ Returns the Dunn index for the given selection of nodes. J.C. Dunn. Well separated clusters and optimal fuzzy partitions. 1974. J.Cybern. 4. 95-104. """ if len(clusters) < 2: raise ValueError("At least 2 clusters are required") intra_dist = [] for c in clusters: for i in c.get_leaves(): if i is not None: # item intraclsuterdist -> Centroid Diameter a = fdist(i.profile, c.profile) * 2 intra_dist.append(a) max_a = numpy.max(intra_dist) inter_dist = [] for i, ci in enumerate(clusters): for cj in clusters[i + 1:]: # intracluster dist -> Centroid Linkage b = fdist(ci.profile, cj.profile) inter_dist.append(b) min_b = numpy.min(inter_dist) if max_a == 0.0: D = 0.0 else: D = min_b / max_a return D
def get_dunn_index(fdist, *clusters): """ Returns the Dunn index for the given selection of nodes. J.C. Dunn. Well separated clusters and optimal fuzzy partitions. 1974. J.Cybern. 4. 95-104. """ if len(clusters)<2: raise ValueError("At least 2 clusters are required") intra_dist = [] for c in clusters: for i in c.get_leaves(): if i is not None: # item intraclsuterdist -> Centroid Diameter a = fdist(i.profile, c.profile)*2 intra_dist.append(a) max_a = numpy.max(intra_dist) inter_dist = [] for i, ci in enumerate(clusters): for cj in clusters[i+1:]: # intracluster dist -> Centroid Linkage b = fdist(ci.profile, cj.profile) inter_dist.append(b) min_b = numpy.min(inter_dist) if max_a == 0.0: D = 0.0 else: D = min_b / max_a return D
def heatmap(node): square_size = 10 # Extras node info node.collapsed = False # Color and style node.img_style["fgcolor"] = "#3333FF" node.img_style["size"] = 0 ncols = node.arraytable.matrix.shape[1] matrix_max = numpy.max(node.arraytable._matrix_max) matrix_min = numpy.min(node.arraytable._matrix_min) print(matrix_max) matrix_avg = matrix_min + ((matrix_max - matrix_min) / 2) ProfileFace = faces.ProfileFace(\ matrix_max,\ matrix_min,\ matrix_avg,\ square_size*ncols,\ square_size,\ "heatmap") ProfileFace.ymargin = 0 if node.is_leaf(): # Set colors faces.add_face_to_node(ProfileFace, node, 0, aligned=True)
def heatmap(node): square_size = 10 # Extras node info node.collapsed = False # Color and style node.img_style["fgcolor"] = "#3333FF" node.img_style["size"] = 0 ncols = node.arraytable.matrix.shape[1] matrix_max = numpy.max(node.arraytable._matrix_max) matrix_min = numpy.min(node.arraytable._matrix_min) print(matrix_max) matrix_avg = matrix_min+((matrix_max-matrix_min)/2) ProfileFace = faces.ProfileFace(\ matrix_max,\ matrix_min,\ matrix_avg,\ square_size*ncols,\ square_size,\ "heatmap") ProfileFace.ymargin=0 if node.is_leaf(): # Set colors faces.add_face_to_node(ProfileFace, node, 0, aligned=True)
def cluster_bars(node): # Extras node info node.collapsed = False # Color and style node.img_style["fgcolor"] = "#3333FF" node.img_style["size"] = 4 if node.is_leaf(): matrix_max = numpy.max(node.arraytable._matrix_max) matrix_min = numpy.min(node.arraytable._matrix_min) matrix_avg = matrix_min + ((matrix_max - matrix_min) / 2) ProfileFace = faces.ProfileFace(\ matrix_max,\ matrix_min,\ matrix_avg,\ 200,\ 40,\ "bars") nameFace = faces.AttrFace("name", fsize=6) faces.add_face_to_node(nameFace, node, 1, aligned=True) faces.add_face_to_node(ProfileFace, node, 0, aligned=True)
def cluster_bars(node): # Extras node info node.collapsed = False # Color and style node.img_style["fgcolor"] = "#3333FF" node.img_style["size"] = 4 if node.is_leaf(): matrix_max = numpy.max(node.arraytable._matrix_max) matrix_min = numpy.min(node.arraytable._matrix_min) matrix_avg = matrix_min+((matrix_max-matrix_min)/2) ProfileFace = faces.ProfileFace(\ matrix_max,\ matrix_min,\ matrix_avg,\ 200,\ 40,\ "bars") nameFace = faces.AttrFace("name",fsize=6 ) faces.add_face_to_node(nameFace, node, 1, aligned=True ) faces.add_face_to_node(ProfileFace, node, 0, aligned=True )
def get_max_vector(vlist): a = numpy.array(vlist) return numpy.max(a, 0)
def get_max_vector(vlist): a = numpy.array(vlist) return numpy.max(a,0)