/
transition_rate_methods.py
44 lines (35 loc) · 1.62 KB
/
transition_rate_methods.py
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
37
38
39
40
41
42
43
44
from sklearn.cluster import DBSCAN
from scipy.stats import gaussian_kde
#### Examples based on scikit learn tutorial:
#### http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#sphx-glr-auto-examples-cluster-plot-dbscan-py
def run_DBSCAN(X, eps = 0.8, min_samples = 200):
db = DBSCAN(eps=eps, min_samples=min_samples).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
print('Estimated number of clusters: %d' % n_clusters_)
return labels, n_clusters_, core_samples_mask
def plot_DBSCAN(X,labels, core_samples_mask):
unique_labels = set(labels)
colors = plt.cm.Spectral(np.linspace(0, 1, len(unique_labels)))
for k, col in zip(unique_labels, colors):
if k == -1:
# Black used for noise.
col = 'k'
class_member_mask = (labels == k)
xy = X[class_member_mask & core_samples_mask]
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
markeredgecolor='k', markersize=4, markeredgewidth = 0)
xy = X[class_member_mask & ~core_samples_mask]
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,
markeredgecolor='k', markersize=4, markeredgewidth = 0)
## Plot density
def plot_density(x,y,s = 10):
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
fig = plt.figure(0,)
fig.set_size_inches(10, 10)
ax = fig.add_subplot(111, )
ax.scatter(x, y, c=z, s=s, edgecolor='')