X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=python_ml%2Fplotting-dbscan-diff.py;fp=python_ml%2Fplotting-dbscan-diff.py;h=0000000000000000000000000000000000000000;hb=2e874f57745e5a1ab10d57e18c6687f5546ab1b4;hp=15d7728d3bcdda3f61999036bb189f5e151609a9;hpb=2422deddd73a43bbcbda776d6ddddba05318a2d2;p=pingpong.git diff --git a/python_ml/plotting-dbscan-diff.py b/python_ml/plotting-dbscan-diff.py deleted file mode 100644 index 15d7728..0000000 --- a/python_ml/plotting-dbscan-diff.py +++ /dev/null @@ -1,97 +0,0 @@ -from sklearn.cluster import DBSCAN -from sklearn import metrics -import matplotlib.cm as cm -import numpy as np -import matplotlib.pyplot as plt - -# Create a subplot with 1 row and 2 columns -fig, (ax2) = plt.subplots(1, 1) -fig.set_size_inches(7, 7) - -# Read from file -# TODO: Just change the following path and filename -# when needed to read from a different file -path = "/scratch/July-2018/Pairs2/" -# TODO: Change the order of the files below to generate -# the diff plot reversedly -device1 = "dlink-siren-device-off" -device2 = "dlink-siren-device-on" -filename1 = device1 + ".txt" -filename2 = device2 + ".txt" -plt.ylim(0, 2000) -plt.xlim(0, 2000) - -# Number of triggers -trig = 50 - -# PLOTTING FOR DEVICE ON EVENT -# Read and create an array of pairs -with open(path + filename1, "r") as pairs: - pairsArr1 = list() - for line in pairs: - # We will see a pair and we need to split it into xpoint and ypoint - xpoint, ypoint = line.split(", ") - pair = [int(xpoint), int(ypoint)] - pairsArr1.append(pair) - -# PLOTTING FOR DEVICE ON EVENT -# Read and create an array of pairs -with open(path + filename2, "r") as pairs: - pairsArr2 = list() - for line in pairs: - # We will see a pair and we need to split it into xpoint and ypoint - xpoint, ypoint = line.split(", ") - pair = [int(xpoint), int(ypoint)] - pairsArr2.append(pair) - -diff12 = [i for i in pairsArr1 if i not in pairsArr2] - -X = np.array(diff12); - -# Compute DBSCAN -# eps = distances -# min_samples = minimum number of members of a cluster -db = DBSCAN(eps=10, 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_ - -# Number of clusters in labels, ignoring noise if present. -n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) - -# Black removed and is used for noise instead. -unique_labels = set(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] - - class_member_mask = (labels == k) - - # print("Unique label: " + str(k) + " with freq: " + str(labels.tolist().count(k))) - xy = X[class_member_mask & core_samples_mask] - plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(cluster_col), - markeredgecolor='k', markersize=10) - - xy = X[class_member_mask & ~core_samples_mask] - plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col), - markeredgecolor='k', markersize=6) - -count = 0 -for pair in diff12: - if labels[count] == -1: - plt.text(pair[0], pair[1], str(pair[0]) + ", " + str(pair[1]), fontsize=10) - else: - # Only print the frequency when this is a real cluster - plt.text(pair[0], pair[1], str(pair[0]) + ", " + str(pair[1]) + - " - Freq:" + str(labels.tolist().count(labels[count])), fontsize=10) - count = count + 1 - -plt.title(device1 + ' - diff - ' + device2) -plt.show() - -