diff options
author | Vasil Zlatanov <vasko@e4-pattern-vm.europe-west4-a.c.electric-orbit-223819.internal> | 2018-12-05 16:32:23 +0000 |
---|---|---|
committer | Vasil Zlatanov <vasko@e4-pattern-vm.europe-west4-a.c.electric-orbit-223819.internal> | 2018-12-05 16:32:23 +0000 |
commit | bcd380b631184e9d4e58c0aa80afb17727581066 (patch) | |
tree | d6fbba240f7d22bdfc922351ac96b22aee80965e /kmean.py | |
parent | 769a50e70ac253531229e1639db6bc9e401a0c43 (diff) | |
download | vz215_np1915-bcd380b631184e9d4e58c0aa80afb17727581066.tar.gz vz215_np1915-bcd380b631184e9d4e58c0aa80afb17727581066.tar.bz2 vz215_np1915-bcd380b631184e9d4e58c0aa80afb17727581066.zip |
Move kmean to seperate filee and refactor code
* Other small quality of life improvements and changes
* to the flags
Diffstat (limited to 'kmean.py')
-rwxr-xr-x | kmean.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/kmean.py b/kmean.py new file mode 100755 index 0000000..4e9d03e --- /dev/null +++ b/kmean.py @@ -0,0 +1,62 @@ +import matplotlib.pyplot as plt +from mpl_toolkits.mplot3d import Axes3D +import sys +import random +import os +import json +import scipy.io +from random import randint +from sklearn.neighbors import KNeighborsClassifier +from sklearn.neighbors import DistanceMetric +from sklearn.cluster import KMeans +from sklearn.decomposition import PCA +from sklearn.discriminant_analysis import LinearDiscriminantAnalysis +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +from sklearn.metrics import confusion_matrix +from sklearn.metrics import accuracy_score +import argparse +import numpy as np +from numpy import genfromtxt +from numpy import linalg as LA +from timeit import default_timer as timer +from scipy.spatial.distance import cdist +from rerank import re_ranking + +def create_kmean_clusters(feature_vectors, labels, gallery_idx, camId): + 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) + + for i in range(2): + km_train_data[i] = KMeans(n_clusters=int(np.max(labels)),random_state=0).fit(train[i]) + km_labels[i] = np.zeros(int(np.max(labels))) # clusters size + km_idx[i] = km_train_data[i].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[0] = np.ones(km_labels_1.size) + clustercam[1] = np.add(np.ones(km_labels_2.size), 1) + for j in range(2): + for j in range(km_labels_1.size): + cl.append(km_train_data[i].cluster_centers_[j]) + cllab.append(km_labels[i][j]) + + train_data = np.array(cl) + train_label = np.array(cllab) + train_cam = np.concatenate(clustercam, axis=1) + return train_data, train_label, train_cam + |