-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtestDbscan.py
More file actions
37 lines (30 loc) · 18.3 KB
/
testDbscan.py
File metadata and controls
37 lines (30 loc) · 18.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from sklearn.cluster import DBSCAN
import numpy as np
import matplotlib.colors as colors
import matplotlib.cm as cm
import matplotlib.pyplot as plt
def get_cmap(N):
'''Returns a function that maps each index in 0, 1, ... N-1 to a distinct
RGB color.'''
color_norm = colors.Normalize(vmin=0, vmax=N-1)
scalar_map = cm.ScalarMappable(norm=color_norm, cmap='hsv')
def map_index_to_rgb_color(index):
return scalar_map.to_rgba(index)
return map_index_to_rgb_color
positions = [[42, 88], [42, 89], [43, 88], [43, 89], [43, 109], [43, 112], [43, 114], [44, 88], [44, 89], [44, 90], [45, 89], [45, 90], [46, 89], [46, 90], [46, 109], [46, 112], [46, 114], [46, 117], [47, 89], [47, 90], [48, 90], [48, 107], [48, 109], [48, 111], [48, 112], [48, 113], [48, 114], [48, 115], [48, 117], [49, 90], [50, 68], [50, 70], [50, 72], [50, 74], [50, 109], [50, 111], [50, 113], [50, 115], [51, 68], [51, 70], [51, 71], [51, 107], [51, 109], [51, 112], [51, 114], [51, 117], [52, 66], [52, 68], [52, 70], [52, 72], [52, 74], [52, 76], [52, 109], [52, 111], [52, 113], [52, 115], [52, 171], [52, 173], [52, 175], [52, 177], [53, 67], [53, 68], [53, 70], [53, 71], [53, 73], [53, 104], [53, 107], [53, 109], [53, 112], [53, 114], [53, 117], [54, 42], [54, 44], [54, 46], [54, 64], [54, 65], [54, 66], [54, 67], [54, 68], [54, 68], [54, 70], [54, 70], [54, 71], [54, 72], [54, 73], [54, 74], [54, 76], [54, 106], [54, 107], [54, 109], [54, 109], [54, 111], [54, 112], [54, 113], [54, 115], [54, 115], [54, 119], [54, 171], [54, 173], [54, 175], [54, 177], [56, 39], [56, 40], [56, 41], [56, 42], [56, 44], [56, 46], [56, 64], [56, 64], [56, 65], [56, 66], [56, 67], [56, 68], [56, 68], [56, 70], [56, 70], [56, 71], [56, 72], [56, 73], [56, 74], [56, 76], [56, 104], [56, 105], [56, 107], [56, 107], [56, 109], [56, 109], [56, 111], [56, 112], [56, 113], [56, 114], [56, 115], [56, 117], [56, 144], [56, 146], [56, 148], [56, 171], [56, 171], [56, 173], [56, 173], [56, 174], [56, 175], [56, 177], [57, 37], [57, 39], [57, 40], [57, 42], [57, 64], [57, 65], [57, 67], [57, 68], [57, 70], [57, 71], [57, 73], [57, 106], [57, 109], [57, 112], [57, 115], [57, 119], [57, 168], [57, 170], [57, 171], [57, 173], [57, 174], [58, 41], [58, 42], [58, 44], [58, 46], [58, 48], [58, 64], [58, 66], [58, 68], [58, 70], [58, 72], [58, 74], [58, 76], [58, 104], [58, 105], [58, 107], [58, 107], [58, 109], [58, 109], [58, 111], [58, 112], [58, 113], [58, 114], [58, 115], [58, 117], [58, 142], [58, 144], [58, 146], [58, 148], [58, 148], [58, 150], [58, 169], [58, 171], [58, 173], [58, 175], [58, 177], [59, 37], [59, 39], [59, 40], [59, 42], [59, 64], [59, 65], [59, 67], [59, 68], [59, 70], [59, 71], [59, 168], [59, 170], [59, 171], [59, 173], [60, 37], [60, 39], [60, 40], [60, 41], [60, 42], [60, 42], [60, 44], [60, 46], [60, 64], [60, 65], [60, 66], [60, 67], [60, 68], [60, 68], [60, 70], [60, 70], [60, 71], [60, 72], [60, 74], [60, 105], [60, 107], [60, 109], [60, 111], [60, 113], [60, 115], [60, 142], [60, 144], [60, 146], [60, 148], [60, 150], [60, 168], [60, 170], [60, 170], [60, 171], [60, 171], [60, 173], [60, 173], [60, 175], [60, 177], [61, 104], [61, 106], [61, 107], [61, 109], [61, 109], [61, 112], [61, 112], [61, 114], [61, 115], [61, 117], [61, 119], [61, 148], [61, 170], [62, 37], [62, 39], [62, 40], [62, 41], [62, 42], [62, 42], [62, 43], [62, 44], [62, 46], [62, 67], [62, 68], [62, 68], [62, 70], [62, 70], [62, 105], [62, 107], [62, 109], [62, 111], [62, 113], [62, 115], [62, 142], [62, 144], [62, 146], [62, 148], [62, 167], [62, 170], [62, 171], [62, 171], [62, 173], [62, 175], [62, 177], [63, 104], [63, 107], [63, 109], [63, 112], [63, 114], [63, 117], [63, 148], [63, 170], [64, 39], [64, 40], [64, 41], [64, 42], [64, 42], [64, 44], [64, 106], [64, 107], [64, 109], [64, 109], [64, 111], [64, 112], [64, 113], [64, 115], [64, 119], [64, 142], [64, 144], [64, 146], [64, 173], [64, 175], [65, 39], [65, 40], [65, 42], [65, 90], [65, 91], [65, 92], [65, 104], [65, 107], [65, 109], [65, 112], [65, 114], [66, 41], [66, 42], [66, 44], [66, 90], [66, 91], [66, 91], [66, 92], [66, 92], [66, 144], [66, 146], [67, 40], [67, 89], [67, 90], [67, 91], [67, 91], [67, 92], [67, 92], [67, 106], [67, 109], [67, 112], [67, 115], [67, 119], [68, 89], [68, 90], [68, 91], [68, 91], [68, 92], [68, 92], [68, 107], [68, 109], [68, 110], [68, 112], [68, 114], [68, 114], [68, 118], [68, 122], [69, 89], [69, 90], [69, 91], [69, 92], [70, 54], [70, 57], [70, 88], [70, 89], [70, 90], [70, 91], [70, 91], [70, 92], [70, 106], [70, 109], [70, 109], [70, 112], [70, 112], [70, 115], [70, 119], [71, 88], [71, 89], [71, 90], [71, 91], [72, 88], [72, 89], [72, 90], [72, 91], [72, 110], [72, 114], [72, 118], [72, 122], [73, 54], [73, 57], [73, 61], [73, 64], [73, 88], [73, 89], [73, 90], [73, 109], [73, 109], [73, 112], [73, 112], [73, 115], [73, 152], [73, 155], [75, 184], [76, 54], [76, 57], [76, 61], [76, 64], [76, 109], [76, 110], [76, 112], [76, 114], [76, 115], [76, 118], [76, 122], [76, 152], [76, 155], [79, 54], [79, 57], [79, 61], [79, 64], [79, 109], [79, 112], [79, 115], [79, 152], [79, 155], [80, 110], [80, 114], [80, 118], [82, 54], [82, 57], [82, 61], [82, 109], [82, 112], [82, 152], [82, 155], [83, 68], [83, 110], [83, 114], [83, 118], [85, 54], [85, 57], [85, 109], [85, 112], [85, 152], [85, 155], [87, 109], [87, 110], [87, 112], [87, 114], [88, 54], [88, 57], [88, 109], [88, 112], [88, 152], [88, 155], [90, 109], [90, 112], [91, 54], [91, 57], [91, 109], [91, 112], [91, 114], [91, 152], [91, 155], [92, 109], [92, 112], [94, 54], [94, 57], [94, 109], [94, 112], [94, 152], [94, 155], [95, 68], [95, 107], [95, 109], [95, 112], [95, 114], [95, 114], [97, 54], [97, 57], [97, 107], [97, 109], [97, 109], [97, 109], [97, 111], [97, 112], [97, 112], [97, 114], [97, 152], [97, 155], [99, 68], [99, 107], [99, 109], [99, 111], [99, 113], [99, 114], [100, 107], [100, 109], [100, 109], [100, 112], [100, 112], [100, 152], [100, 155], [101, 107], [101, 109], [101, 111], [101, 113], [101, 149], [101, 151], [101, 153], [102, 107], [102, 109], [102, 112], [102, 114], [103, 107], [103, 109], [103, 109], [103, 111], [103, 112], [103, 113], [103, 149], [103, 151], [103, 152], [103, 153], [103, 154], [103, 155], [104, 107], [104, 109], [104, 151], [104, 153], [105, 56], [105, 57], [105, 107], [105, 109], [105, 111], [105, 166], [105, 167], [105, 168], [106, 75], [106, 109], [106, 114], [106, 152], [106, 155], [106, 165], [106, 166], [106, 167], [106, 168], [106, 170], [106, 178], [106, 180], [107, 74], [107, 75], [107, 166], [107, 167], [107, 168], [109, 109], [109, 152], [109, 155], [110, 114], [112, 151], [112, 152], [112, 153], [112, 155], [114, 114], [114, 119], [114, 151], [114, 153], [115, 152], [117, 151], [118, 110], [118, 114], [119, 114], [119, 119], [119, 123], [122, 109], [122, 110], [122, 112], [122, 114], [122, 118], [123, 114], [123, 119], [123, 123], [125, 109], [125, 110], [125, 112], [125, 114], [125, 118], [125, 122], [128, 109], [128, 112], [128, 114], [128, 119], [128, 123], [129, 110], [129, 114], [129, 118], [129, 122], [131, 109], [131, 112], [131, 115], [133, 106], [133, 110], [133, 114], [133, 114], [133, 118], [133, 119], [133, 122], [133, 123], [134, 106], [134, 109], [134, 112], [134, 115], [134, 119], [136, 112], [137, 106], [137, 106], [137, 109], [137, 110], [137, 112], [137, 114], [137, 115], [137, 118], [137, 119], [137, 122], [138, 109], [138, 114], [138, 119], [138, 123], [139, 107], [139, 109], [139, 112], [139, 114], [140, 106], [140, 109], [140, 112], [140, 115], [140, 119], [141, 106], [141, 107], [141, 109], [141, 110], [141, 112], [141, 114], [141, 114], [141, 118], [141, 122], [141, 196], [143, 106], [143, 109], [143, 109], [143, 112], [143, 114], [143, 115], [143, 119], [143, 119], [143, 123], [144, 70], [144, 104], [144, 106], [144, 107], [144, 109], [144, 110], [144, 112], [144, 114], [144, 114], [144, 117], [144, 118], [144, 122], [146, 68], [146, 70], [146, 72], [146, 103], [146, 104], [146, 106], [146, 107], [146, 109], [146, 109], [146, 112], [146, 112], [146, 114], [146, 115], [146, 117], [146, 119], [146, 171], [146, 173], [146, 175], [146, 177], [147, 109], [147, 114], [147, 119], [147, 123], [147, 171], [148, 66], [148, 67], [148, 68], [148, 68], [148, 70], [148, 70], [148, 72], [148, 74], [148, 104], [148, 106], [148, 107], [148, 109], [148, 110], [148, 112], [148, 114], [148, 114], [148, 117], [148, 118], [148, 122], [148, 169], [148, 171], [148, 171], [148, 173], [148, 173], [148, 174], [148, 175], [148, 176], [148, 177], [148, 178], [149, 65], [149, 67], [149, 68], [149, 70], [149, 103], [149, 106], [149, 109], [149, 112], [149, 115], [149, 119], [149, 171], [149, 173], [149, 174], [149, 176], [149, 178], [150, 39], [150, 41], [150, 42], [150, 44], [150, 66], [150, 68], [150, 70], [150, 72], [150, 74], [150, 144], [150, 146], [150, 148], [150, 150], [150, 169], [150, 171], [150, 173], [150, 175], [150, 177], [151, 43], [151, 64], [151, 65], [151, 67], [151, 68], [151, 70], [151, 104], [151, 107], [151, 109], [151, 112], [151, 114], [151, 117], [151, 143], [151, 170], [151, 171], [151, 173], [151, 174], [151, 176], [151, 178], [152, 39], [152, 41], [152, 42], [152, 44], [152, 66], [152, 68], [152, 70], [152, 72], [152, 74], [152, 103], [152, 106], [152, 106], [152, 109], [152, 109], [152, 110], [152, 112], [152, 114], [152, 114], [152, 115], [152, 118], [152, 119], [152, 119], [152, 122], [152, 123], [152, 144], [152, 146], [152, 148], [152, 150], [152, 152], [152, 167], [152, 169], [152, 171], [152, 173], [152, 175], [152, 177], [153, 43], [153, 46], [153, 64], [153, 65], [153, 65], [153, 67], [153, 68], [153, 104], [153, 107], [153, 109], [153, 112], [153, 114], [153, 142], [153, 143], [153, 145], [153, 151], [153, 168], [153, 170], [153, 171], [153, 173], [153, 174], [153, 176], [153, 178], [153, 196], [154, 37], [154, 39], [154, 41], [154, 42], [154, 44], [154, 64], [154, 65], [154, 66], [154, 67], [154, 68], [154, 68], [154, 70], [154, 72], [154, 74], [154, 142], [154, 143], [154, 144], [154, 145], [154, 146], [154, 148], [154, 150], [154, 152], [154, 168], [154, 169], [154, 170], [154, 171], [154, 171], [154, 173], [154, 173], [154, 174], [154, 175], [154, 176], [154, 177], [154, 196], [155, 62], [155, 65], [155, 103], [155, 106], [155, 109], [155, 112], [155, 115], [156, 37], [156, 39], [156, 41], [156, 42], [156, 43], [156, 44], [156, 62], [156, 64], [156, 65], [156, 65], [156, 67], [156, 68], [156, 70], [156, 72], [156, 104], [156, 106], [156, 107], [156, 109], [156, 110], [156, 112], [156, 114], [156, 118], [156, 122], [156, 142], [156, 143], [156, 144], [156, 145], [156, 146], [156, 146], [156, 148], [156, 150], [156, 151], [156, 169], [156, 170], [156, 171], [156, 171], [156, 173], [156, 173], [156, 174], [156, 175], [156, 176], [156, 177], [157, 62], [157, 65], [157, 109], [157, 114], [157, 119], [157, 123], [157, 142], [157, 143], [157, 145], [157, 146], [157, 171], [157, 173], [157, 174], [158, 39], [158, 41], [158, 42], [158, 62], [158, 68], [158, 70], [158, 72], [158, 103], [158, 104], [158, 106], [158, 107], [158, 109], [158, 109], [158, 112], [158, 112], [158, 115], [158, 144], [158, 146], [158, 148], [158, 150], [158, 151], [158, 171], [158, 173], [158, 175], [159, 142], [159, 143], [159, 145], [159, 146], [160, 39], [160, 41], [160, 106], [160, 110], [160, 114], [160, 118], [160, 122], [160, 143], [160, 144], [160, 145], [160, 146], [160, 146], [160, 148], [161, 104], [161, 106], [161, 107], [161, 109], [161, 109], [161, 112], [161, 115], [161, 196], [161, 197], [162, 114], [162, 119], [162, 123], [162, 143], [162, 146], [162, 196], [162, 197], [163, 104], [163, 107], [163, 109], [163, 195], [163, 196], [163, 197], [164, 54], [164, 106], [164, 106], [164, 109], [164, 110], [164, 112], [164, 114], [164, 115], [164, 118], [164, 122], [164, 155], [164, 195], [164, 196], [164, 197], [165, 195], [165, 196], [165, 197], [166, 114], [166, 119], [166, 123], [166, 194], [166, 195], [166, 196], [166, 197], [167, 54], [167, 57], [167, 61], [167, 106], [167, 106], [167, 109], [167, 110], [167, 112], [167, 114], [167, 115], [167, 118], [167, 122], [167, 155], [167, 194], [167, 195], [167, 196], [167, 197], [168, 194], [168, 195], [168, 196], [168, 197], [169, 194], [169, 195], [169, 196], [170, 54], [170, 57], [170, 61], [170, 106], [170, 109], [170, 112], [170, 115], [170, 152], [170, 155], [170, 195], [171, 106], [171, 110], [171, 114], [171, 114], [171, 118], [171, 119], [173, 54], [173, 57], [173, 106], [173, 109], [173, 112], [173, 115], [173, 152], [173, 155], [175, 110], [175, 114], [175, 118], [176, 114], [176, 119], [177, 54], [177, 106], [177, 109], [177, 112], [177, 152], [177, 155], [179, 110], [179, 114], [180, 54], [180, 106], [180, 109], [180, 112], [180, 155], [181, 114], [183, 54], [183, 106], [183, 109], [183, 110], [183, 112], [183, 114], [183, 155], [185, 43], [185, 46], [185, 114], [186, 54], [186, 106], [186, 109], [186, 110], [186, 112], [186, 114], [186, 155], [187, 43], [187, 46], [187, 107], [187, 109], [187, 112], [189, 54], [189, 106], [189, 109], [189, 112], [189, 155], [190, 46], [190, 104], [190, 107], [190, 109], [190, 110], [190, 112], [190, 114], [190, 114], [192, 54], [192, 102], [192, 104], [192, 106], [192, 107], [192, 109], [192, 109], [192, 112], [192, 112], [192, 155], [193, 109], [194, 110], [194, 114], [195, 102], [195, 104], [195, 107], [195, 107], [195, 109], [195, 109], [195, 109], [195, 114], [197, 102], [197, 104], [197, 105], [197, 107], [197, 107], [197, 109], [197, 109], [198, 109], [198, 110], [198, 114], [198, 155], [199, 107], [199, 109], [200, 104], [200, 107], [200, 114], [200, 161], [200, 162], [200, 176], [200, 177], [200, 178], [201, 155], [201, 162], [201, 177], [201, 178], [202, 46], [202, 70], [202, 71], [202, 72], [202, 73], [202, 74], [202, 75], [202, 76], [202, 114], [202, 174], [202, 175], [202, 176], [202, 177], [202, 178], [202, 179], [202, 180], [203, 72], [203, 73], [203, 74], [203, 75], [203, 76], [203, 77], [203, 175], [203, 176], [203, 177], [203, 178], [203, 179], [203, 180], [204, 155], [205, 43], [205, 46], [205, 48], [205, 114], [205, 114], [205, 153], [207, 43], [207, 46], [207, 151], [207, 153], [207, 155], [209, 43], [209, 46], [209, 110], [209, 114], [209, 151], [209, 153], [213, 110], [213, 114], [216, 109], [217, 110], [217, 114], [217, 118], [219, 109], [219, 112], [221, 110], [221, 114], [221, 118], [221, 122], [222, 109], [222, 112], [225, 106], [225, 109], [225, 110], [225, 112], [225, 114], [225, 115], [225, 118], [225, 122], [228, 106], [228, 109], [228, 112], [228, 115], [228, 119], [231, 106], [231, 109], [231, 109], [231, 112], [231, 112], [231, 115], [231, 119], [234, 106], [234, 107], [234, 109], [234, 109], [234, 112], [234, 112], [234, 114], [234, 115], [234, 119], [236, 107], [236, 109], [236, 112], [236, 114], [236, 117], [238, 103], [238, 106], [238, 109], [238, 112], [238, 115], [238, 119], [239, 104], [239, 107], [239, 109], [239, 112], [239, 114], [239, 117], [240, 68], [240, 70], [240, 72], [240, 171], [240, 173], [240, 173], [240, 175], [240, 177], [241, 103], [241, 104], [241, 106], [241, 107], [241, 109], [241, 109], [241, 112], [241, 112], [241, 114], [241, 115], [241, 117], [241, 119], [242, 66], [242, 67], [242, 68], [242, 70], [242, 72], [242, 169], [242, 171], [242, 171], [242, 173], [242, 173], [242, 174], [242, 175], [242, 176], [242, 177], [242, 178], [243, 64], [243, 65], [243, 67], [243, 68], [243, 170], [243, 171], [243, 173], [243, 174], [243, 176], [243, 178], [244, 39], [244, 41], [244, 42], [244, 43], [244, 66], [244, 68], [244, 70], [244, 72], [244, 74], [244, 104], [244, 107], [244, 109], [244, 112], [244, 114], [244, 117], [244, 144], [244, 146], [244, 148], [244, 150], [244, 167], [244, 169], [244, 171], [244, 173], [244, 175], [244, 177], [245, 64], [245, 65], [245, 67], [245, 68], [245, 168], [245, 170], [245, 171], [245, 173], [245, 174], [245, 176], [245, 178], [246, 37], [246, 39], [246, 41], [246, 42], [246, 43], [246, 44], [246, 46], [246, 62], [246, 64], [246, 65], [246, 66], [246, 67], [246, 68], [246, 68], [246, 70], [246, 72], [246, 74], [246, 104], [246, 107], [246, 109], [246, 112], [246, 114], [246, 143], [246, 144], [246, 146], [246, 148], [246, 150], [246, 152], [246, 167], [246, 168], [246, 169], [246, 170], [246, 171], [246, 171], [246, 173], [246, 173], [246, 174], [246, 175], [246, 176], [246, 177], [248, 37], [248, 39], [248, 41], [248, 42], [248, 44], [248, 62], [248, 63], [248, 64], [248, 65], [248, 66], [248, 67], [248, 68], [248, 68], [248, 70], [248, 72], [248, 142], [248, 143], [248, 144], [248, 145], [248, 146], [248, 148], [248, 150], [248, 152], [248, 168], [248, 169], [248, 170], [248, 171], [248, 171], [248, 173], [248, 173], [248, 174], [248, 175], [248, 176], [248, 177], [249, 37], [249, 39], [249, 41], [249, 42], [249, 43], [249, 62], [249, 64], [249, 65], [249, 66], [249, 67], [249, 68], [249, 68], [249, 70], [249, 72], [249, 104], [249, 107], [249, 109], [249, 112], [249, 114], [249, 142], [249, 143], [249, 144], [249, 145], [249, 146], [249, 148], [249, 150], [249, 168], [249, 169], [249, 170], [249, 171], [249, 171], [249, 173], [249, 173], [249, 174], [249, 175], [249, 176], [249, 177], [250, 63], [251, 37], [251, 39], [251, 41], [251, 42], [251, 43], [251, 62], [251, 63], [251, 64], [251, 65], [251, 67], [251, 68], [251, 70], [251, 104], [251, 107], [251, 109], [251, 112], [251, 142], [251, 143], [251, 144], [251, 145], [251, 146], [251, 148], [251, 170], [251, 171], [251, 173], [251, 173], [251, 174], [252, 63], [253, 37], [253, 39], [253, 41], [253, 65], [253, 104], [253, 107], [253, 109], [253, 143], [253, 144], [253, 145], [253, 146], [253, 148], [253, 171], [255, 39], [255, 196], [256, 195], [256, 196], [256, 197], [257, 89], [257, 195], [257, 196], [257, 197], [258, 87], [258, 88], [258, 89], [258, 194], [258, 195], [258, 196], [258, 197], [259, 87], [259, 88], [259, 89], [259, 194], [259, 195], [259, 196], [259, 197], [260, 87], [260, 88], [260, 89], [260, 194], [260, 195], [260, 196], [260, 197], [261, 87], [261, 88], [261, 89], [261, 194], [261, 195], [261, 196], [261, 197], [262, 87], [262, 88], [262, 194], [262, 195], [262, 196]]
db = DBSCAN(eps=3, min_samples=15).fit(positions)
clusters = []
for k in np.unique(db.labels_):
clusters.append([])
members = np.where(db.labels_ == k)[0]
print members
if k == -1:
print("outliers:")
else:
print("cluster %d:" % k)
clusters[k] = [positions[i] for i in members]
colors = get_cmap(len(clusters))
for k in xrange(len(clusters)):
plt.scatter([pos[0] for pos in clusters[k]],[pos[1] for pos in clusters[k]],c=colors(k))
plt.show()
print clusters