sklearn of clustering algorithm based DBSCAN

'' ' 
    DBSCAN Algorithm: From a sample of any sample space, given in advance to make the radius of the circle, where the circle is the sample in the sample are treated in the same cluster, 
            these samples were in the circle continue to do as the center circle, repeat the above process, expanding the size of the circle in the sample until no new sample is added so far, 
            so far to obtain a cluster. In the remaining samples, the above process is repeated until all samples in the sample is exhausted space. 

        Characteristics of DBSCAN: 
            1. previously given radius will affect the final clustering result can be selected by means of the profile coefficients preferred aspect. 
            The formation of the clusters, the sample is subdivided into the following three categories: 
                the outer periphery of the sample: the other samples are collected to a cluster, but not be able to sample a new sample is introduced. 
                Isolated Sample: cluster number of samples below the lower limit of the set, is not called clustering, otherwise referred to as isolated samples. 
                Core sample: sample in addition to the outer periphery of the sample and the isolated samples. 
'' ' 

Import numpy AS NP
 Import matplotlib.pyplot AS MP
 Import sklearn.cluster SC AS
 Import sklearn.metrics SM AS 

# to read data, the drawn image 
x = np.loadtxt (' ./Ml_data/multiple3.txt ' , the unpack = False, DTYPE = ' F8 ' , DELIMITER = ' , ' )
 Print (x.shape) 

# select the optimal radius 
epsilons np.linspace = (0.3, 1.0,. 8 ) 
Models , Scores = [], []
 for Epsilon in epsilons:
     # construct models for each radius DBSCAN 
    model = sc.DBSCAN (EPS = Epsilon, min_samples =. 5 ) 
    model.fit (X) 
    Score = sm.silhouette_score (X, model .labels_, SAMPLE_SIZE = len (X), Metric = ' Euclidean ' ) 
    models.append (Model)
    scores.append (Score) 
index = np.array (Scores) .argmax () 
best_model = Models [index] 
best_eps = epsilons [index] 
BEST_SCORE = Scores [index]
 Print (best_eps, best_model, BEST_SCORE)
 # -product algorithm acquired DBSAN subscript core samples 
core_indices = best_model.core_sample_indices_ 
core_mask = np.zeros (len (X), DTYPE = ' BOOL ' ) 
core_mask [core_indices] = True
 Print (core_mask)
 # obtain sample mask isolated 
offset_mask = best_model.labels_ = -1 = Print
(OFFSET_MASK)
 # Get the mask outer periphery of the sample 
p_mask = ~ (core_mask | OFFSET_MASK)
 Print (p_mask)
 # outputs the core coordinates, the isolated point coordinates and the outer peripheral point coordinates 
Print ( ' core point coordinate: ' , X [core_mask], On Sep = ' \ n- ' )
 Print ( ' isolated point coordinates: ' , X [OFFSET_MASK], On Sep = ' \ n- ' )
 Print ( ' peripheral point coordinates: ' , X [p_mask], On Sep = ' \ n- ' ) 

# Paint sample display data 
mp.figure ( ' DBSCAN ' , facecolor ='lightgray')
mp.title('DBSCAN', fontsize=16)
mp.xlabel('X', fontsize=14)
mp.ylabel('Y', fontsize=14)
mp.tick_params(labelsize=10)
mp.scatter(x[core_mask][:, 0], x[core_mask][:, 1], s=80, c=best_model.labels_[core_mask], label='core')
mp.scatter(x[offset_mask][:, 0], x[offset_mask][:, 1], s=80, c=best_model.labels_[offset_mask], label='offset')
mp.scatter(x[p_mask][:, 0], x[p_mask][:, 1], s=80, c=best_model.labels_[p_mask], label='p')
mp.legend()
mp.show()


输出结果:
(200, 2)
0.7999999999999999 DBSCAN(algorithm='auto', eps=0.7999999999999999, leaf_size=30,
       metric='euclidean', metric_params=None, min_samples=5, n_jobs=None,
       p=None) 0.41779833446624154
[False  True  True  True  True  True  True  True  True  True False  True
  True  True  True  True  True  True  True False  True  True  True  True
  True  True False  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True False  True
  True  True  True  True  True  True  True  True False  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True False  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
 False  True  True  True  True  True  True  True  True  True  True False
  True  True  True  True  True  True  True  True False  True  True  True
  True  True  True False  True  True False  True  True  True False False
  True  True  True  True False  True  True  True  True  True  True False
  True False  True  True False  True  True  True False  True  True  True
  True  True False False  True  True  True  True False  True  True False
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True False  True  True  True  True  True]
[False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False  True False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False  True False False False False False False False
 False False False False  True False False False False False False False
 False False False False False False False False  True False False False
 False False False False False False False False False False False False
 False False False False False False False False False False False False
 False False False False False False False False]
[ True False False False False False False False False False  True False
 False False False False False False False  True False False False False
 False False False False False False False False False False False False
 False False False False False False False False False False  True False
 False False False False False False False False  True False False False
 False False False False False False False False False False False False
 False False False False  True False False False False False False False
 False False False False False False False False False False False False
  True False False False False False False False False False False  True
 False False False False False False False False  True False False False
 False False False True False False True False False False True True 
 False False False False False False False False False False False  True
 False True False False False False False False True False False False 
 False False True True False False False False False False False True 
 False False False False False False False False False False False False 
 False False false false false false false false false false false false 
 false false false false false false True false] 
核心点坐标: 
[[ 2.84 3.16 ] 
 [ 4.74 1.84 ] 
 [ 6:36 4.89 ] 
 [ 1.77 1:55 ] 
 [ 4:29 6.74 ] 
 [ 5.78 0.95 ] 
 [ 8:36 5.2 ] 
 [ 1.76 2.9 ] 
 [3.2  4.98]
 [6.02 6.12]
 [2.91 1.74]
 [3.81 6.2 ]
 [5.67 2.19]
 [6.93 5.8 ]
 [1.84 1.36]
 [3.5  5.6 ]
 [5.77 1.54]
 [2.1  1.68]
 [3.98 4.85]
 [5.64 3.35]
 [7.59 6.79]
 [1.92 3.93]
 [3.93 5.7 ]
 [7.24 6.23]
 [1.36 1.47]
 [1.78 5.39]
 [5.93 1.19]
 [7.34 5.58]
 [1.86 1.99]
 [3.2  5.19]
 [5.62 2.45]
 [6.31 5.37]
 [1.49 1.8 ]
 [2.13 5.29]
 [5.57 2.77]
 [6.77 5.8 ]
 [1.79 2.13]
 [3.71 4.65]
 [5.46 1.92]
 [6.53 5.14]
 [2.06 2.56]
 [4.03 4.89]
 [7.25 4.27]
 [2.77 2.91]
 [2.98 4.4 ]
 [5.21 3.07]
 [6.54 4.05]
 [1.59 1.04]
 [1.65 5.41]
 [6.53 1.76]
 [6.77 5.59]
 [2.21 4.57]
 [5.58 1.88]
 [7.61 4.95]
 [1.8  1.25]
 [2.77 5.71]
 [5.13 2.4 ]
 [7.14 5.6 ]
 [1.83 1.26]
 [2.78 5.67]
 [5.76 2.64]
 [6.71 6.01]
 [2.64 1.86]
 [3.21 5.09]
 [7.23 1.22]
 [6.47 5.5 ]
 [2.46 2.51]
 [1.92 3.94]
 [5.64 2.76]
 [7.16 6.08]
 [3.52 4.25]
 [5.41 3.55]
 [7.9  5.22]
 [1.99 2.64]
 [3.46 4.66]
 [6.56 2.25]
 [6.89 4.43]
 [1.4  1.08]
 [3.43 6.08]
 [6.64 2.19]
 [6.26 5.91]
 [2.15 3.11]
 [3.18 5.41]
 [6.73 3.67]
 [7.36 5.97]
 [1.55 2.96]
 [3.99 5.63]
 [6.68 3.51]
 [6.34 5.99]
 [3.91 4.54]
 [6.21 3.2 ]
 [6.25 5.33]
 [2.13 1.91]
 [3.75 6.23]
 [4.35 1.49]
 [7.14 5.64]
 [1.68 2.67]
 [3.85 4.84]
 [6.04 2.68]
 [1.55 2.26]
 [1.86 5.29]
 [6.06 2.12]
 [7.77 5.17]
 [1.35 2.16]
 [3.53 6.11]
 [6.8  0.61]
 [6.92 6.02]
 [3.07 5.09]
 [6.44 2.07]
 [7.15 6.15]
 [1.01 2.56]
 [2.45 6.24]
 [6.86 2.54]
 [2.73 1.7 ]
 [2.25 5.62]
 [7.56 5.93]
 [3.01 1.68]
 [2.74 4.45]
 [1.99 0.39]
 [4.05 6.16]
 [5.34 2.66]
 [6.09 5.58]
 [3.14 5.85]
 [6.04 0.98]
 [6.02 5.82]
 [1.56 1.65]
 [3.08 6.49]
 [5.64 3.26]
 [2.75 1.9 ]
 [6.47 0.7 ]
 [7.04 4.83]
 [2.8  3.42]
 [7.14 1.72]
 [6.9  6.86]
 [4.55 5.17]
 [6.29 1.99]
 [7.41 4.88]
 [2.83 2.29]
 [3.24 5.83]
 [1.51 2.95]
 [2.55 5.51]
 [6.5  1.72]
 [7.97 4.62]
 [2.82 4.83]
 [5.02 3.53]
 [1.57 2.67]
 [1.72 4.05]
 [6.44 3.28]
 [7.41 6.85]
 [1.67 1.5 ]
 [1.77 5.59]
 [5.4  2.64]
 [7.18 5.94]
 [1.45 1.47]
 [3.77 5.01]
 [6.31 0.48]
 [6.65 5.65]
 [1.37 2.51]
 [2.54 4.42]
 [6.17 1.8 ]
 [7.29 4.68]
 [2.44 1.57]
 [3.46 4.5 ]
 [5.58 2.19]
 [6.46 6.23]
 [2.17 2.4 ]
 [3.29 5.66]
 [6.99 1.71]
 [6.54 4.71]
 [0.99 2.14]
 [3.67 4.47]
 [6.64 6.66]
 [2.15 0.75] 
 [ 3.26 6.08 ] 
 [ 5.72 1.98 ] 
 [ 7.26 5.35 ]] 
isolated coordinates: 
[[ 5.66 -0.33 ] 
 [ 0.16 1.55 ] 
 [ -0.27 2.22 ] 
 [ -0.39 2.28 ]] 
peripheral point coordinates: 
[[ 1.96 -0.09 ] 
 [ 5.56 0.34 ] 
 [ 8.68 4.33 ] 
 [ 7.54 0.52 ] 
 [ 0.42 2.75 ] 
 [ 3.29 1.26 ] 
 [ 3.96 1.83 ] 
 [ 5.26 5.89 ] 
 [1.11  3.74]
 [ 8.17  6.19]
 [ 7.93  1.84]
 [ 4.53  3.2 ]
 [ 8.95  5.7 ]
 [ 8.26  6.04]
 [ 3.46  3.57]
 [ 2.6   0.77]
 [ 4.26  1.67]
 [ 4.78  7.25]
 [ 7.77  7.38]
 [ 4.98  1.02]]

  

Guess you like

Origin www.cnblogs.com/yuxiangyang/p/11220648.html