def _CalcMutualNearestNeighbors(hull_points, all_points): all_points_list = list(all_points) ds = distance.pdist(list(all_points)) std_d = p.std(ds) square_ds = distance.squareform(ds) nearest_neighbors = {} for i, point in enumerate(all_points_list): if point not in hull_points: continue my_ds = [(d, j) for j, d in enumerate(square_ds[i]) if j != i] my_ds.sort() nearest_neighbors[point] = set([j for d,j in my_ds[:3]]) no_mutual = set() for i, point in enumerate(all_points_list): if point not in hull_points: continue no_nbrs = True for neighbor_index in nearest_neighbors.get(point, []): neighbor = all_points_list[neighbor_index] neighbor_set = nearest_neighbors.get(neighbor, []) if i in neighbor_set: no_nbrs = False if no_nbrs: no_mutual.add(point) return no_mutual
def _CalcMutualNearestNeighbors(hull_points, all_points): all_points_list = list(all_points) ds = distance.pdist(list(all_points)) std_d = p.std(ds) square_ds = distance.squareform(ds) nearest_neighbors = {} for i, point in enumerate(all_points_list): if point not in hull_points: continue my_ds = [(d, j) for j, d in enumerate(square_ds[i]) if j != i] my_ds.sort() nearest_neighbors[point] = set([j for d, j in my_ds[:3]]) no_mutual = set() for i, point in enumerate(all_points_list): if point not in hull_points: continue no_nbrs = True for neighbor_index in nearest_neighbors.get(point, []): neighbor = all_points_list[neighbor_index] neighbor_set = nearest_neighbors.get(neighbor, []) if i in neighbor_set: no_nbrs = False if no_nbrs: no_mutual.add(point) return no_mutual
def _CalcDensities(hull_points, all_points): ds = distance.pdist(list(all_points)) std_d = p.std(ds) square_ds = distance.squareform(ds) densities = {} for i, point in enumerate(all_points): if point not in hull_points: continue my_ds = square_ds[i] density = len([1 for i in my_ds if i <= std_d]) densities[point] = density tmp_densities = [(d, pt) for pt,d in densities.iteritems()] tmp_densities.sort(reverse=True) return tmp_densities, std_d
def _CalcDensities(hull_points, all_points): ds = distance.pdist(list(all_points)) std_d = p.std(ds) square_ds = distance.squareform(ds) densities = {} for i, point in enumerate(all_points): if point not in hull_points: continue my_ds = square_ds[i] density = len([1 for i in my_ds if i <= std_d]) densities[point] = density tmp_densities = [(d, pt) for pt, d in densities.iteritems()] tmp_densities.sort(reverse=True) return tmp_densities, std_d
# exercise 10.2.1 from matplotlib.pyplot import figure, show from scipy.io import loadmat from toolbox_02450 import clusterplot from scipy.cluster.hierarchy import linkage, fcluster, dendrogram, distance from project_3.data import origX # data = 1 - origX.corr() # corr_condensed = distance.squareform(data) # convert to condensed # z = linkage(data, method='centroid') # dendrogram(z, labels=data.columns) # show() data = origX corr_condensed = distance.squareform(data) # convert to condensed z = linkage(data, method='centroid') dendrogram(z) show() print('Ran Exercise 10.2.1')