X-Git-Url: http://plrg.eecs.uci.edu/git/?p=pingpong.git;a=blobdiff_plain;f=python_ml%2Fplotting-dbscan.py;h=2202a8ef19894255d34eb24da996cad7754b851e;hp=bdfc1d5302ac0c5442b7d8cd266c09ff049b3bcf;hb=e21dffd88279bcc592e9ba6c680f5c992f970af3;hpb=2317de543977ae3e1e3a8da254614602a429810c diff --git a/python_ml/plotting-dbscan.py b/python_ml/plotting-dbscan.py index bdfc1d5..2202a8e 100644 --- a/python_ml/plotting-dbscan.py +++ b/python_ml/plotting-dbscan.py @@ -13,8 +13,10 @@ fig.set_size_inches(7, 7) # TODO: Just change the following path and filename # when needed to read from a different file path = "/scratch/July-2018/Pairs2/" -device = "alexa2-off" +device = "dlink-siren-device-off" filename = device + ".txt" +plt.ylim(0, 2000) +plt.xlim(0, 2000) # Number of triggers trig = 50 @@ -35,7 +37,9 @@ X = np.array(pairsArr); # Compute DBSCAN # eps = distances # min_samples = minimum number of members of a cluster -db = DBSCAN(eps=20, min_samples=trig - 5).fit(X) +#db = DBSCAN(eps=20, min_samples=trig - 5).fit(X) +# TODO: This is just for seeing more clusters +db = DBSCAN(eps=20, min_samples=trig - 45).fit(X) core_samples_mask = np.zeros_like(db.labels_, dtype=bool) core_samples_mask[db.core_sample_indices_] = True labels = db.labels_ @@ -43,17 +47,18 @@ 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_) +#print('Estimated number of clusters: %d' % n_clusters_) import matplotlib.pyplot as plt # Black removed and is used for noise instead. unique_labels = set(labels) -print("Labels: " + str(labels)) +#print("Labels: " + str(labels)) colors = [plt.cm.Spectral(each) for each in np.linspace(0, 1, len(unique_labels))] for k, col in zip(unique_labels, colors): + cluster_col = [1, 0, 0, 1] if k == -1: # Black used for noise. col = [0, 0, 0, 1] @@ -61,7 +66,7 @@ for k, col in zip(unique_labels, colors): class_member_mask = (labels == k) xy = X[class_member_mask & core_samples_mask] - plt.plot(xy[:, 0], xy[:, 1], 'o', + plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(cluster_col), markeredgecolor='k', markersize=10) xy = X[class_member_mask & ~core_samples_mask] @@ -79,11 +84,11 @@ for pair in pairsArr: else: # Only print the frequency when this is a real cluster plt.text(pair[0], pair[1], str(pair[0]) + ", " + str(pair[1]) + - "\nFreq: " + str(labels.tolist().count(labels[count])), fontsize=10) + " : " + str(labels.tolist().count(labels[count])), fontsize=10) count = count + 1 -plt.title(device + ' - Estimated number of clusters: %d' % n_clusters_) +plt.title(device + ' - Clusters: %d' % n_clusters_) plt.show()