diff options
author | nunzip <np_scarh@e4-pattern-vm.europe-west4-a.c.electric-orbit-223819.internal> | 2018-12-05 19:12:56 +0000 |
---|---|---|
committer | nunzip <np_scarh@e4-pattern-vm.europe-west4-a.c.electric-orbit-223819.internal> | 2018-12-05 19:12:56 +0000 |
commit | 54e0552d2f14e734809912ca0f4e7ffa1e8a682e (patch) | |
tree | 0c7a2a7b66cf6c0200ee070f1dff1656f2bdfbc5 /lib/kmean.py | |
parent | 60189ef2705ea441cadff4afd63fe396edb6550a (diff) | |
parent | 219432c1bf2d9edd9fe7d2d9108627646447a0ec (diff) | |
download | vz215_np1915-54e0552d2f14e734809912ca0f4e7ffa1e8a682e.tar.gz vz215_np1915-54e0552d2f14e734809912ca0f4e7ffa1e8a682e.tar.bz2 vz215_np1915-54e0552d2f14e734809912ca0f4e7ffa1e8a682e.zip |
Resolve conflict lambda
Diffstat (limited to 'lib/kmean.py')
-rw-r--r-- | lib/kmean.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/kmean.py b/lib/kmean.py new file mode 100644 index 0000000..f041b19 --- /dev/null +++ b/lib/kmean.py @@ -0,0 +1,46 @@ +from logging import debug +import numpy as np +from sklearn.cluster import KMeans + +def create_kmean_clusters(feature_vectors, labels, gallery_idx, camId): + gallery = ([],[]) + gallerylab = ([],[]) + for i in range(gallery_idx.size): + cam = camId[gallery_idx[i]] - 1 + gallery[cam].append(feature_vectors[gallery_idx[i]]) + gallerylab[cam].append(labels[gallery_idx[i]]) + + + train = np.array(gallery) + tlabel = np.array(gallerylab) + + km_train_data = [] + km_idx = [] + km_labels = [] + + for i in range(2): + km_train_data.append(KMeans(n_clusters=int(np.max(labels)),random_state=0).fit(train[i])) + km_idx.append(km_train_data[i].labels_) + km_labels.append(range(np.max(labels))) + for j in range(np.max(labels)): + class_vote = np.zeros(np.max(labels)) + for q in range(km_idx[i].size): + if km_idx[i][q]==j: + class_vote[int(tlabel[i][q])-1] += 1 + km_labels[i][j] = np.argmax(class_vote) + 1 + + #MERGE CLUSTERS + cl = [] + cllab = [] + clustercam = [] + for i in range(2): + clustercam.append(np.add(np.ones(len(km_labels[i])), i)) + for j in range(len(km_labels[i])): + cl.append(km_train_data[i].cluster_centers_[j]) + cllab.append(km_labels[i][j]) + + train_data = np.array(cl) + debug("Kmean data has shape", train_data.shape) + train_label = np.array(cllab) + train_cam = np.array([clustercam[i] for i in range(2)]).reshape(train_label.shape[0]) + return train_data, train_label, train_cam |