From bcd380b631184e9d4e58c0aa80afb17727581066 Mon Sep 17 00:00:00 2001 From: Vasil Zlatanov Date: Wed, 5 Dec 2018 16:32:23 +0000 Subject: Move kmean to seperate filee and refactor code * Other small quality of life improvements and changes * to the flags --- kmean.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 kmean.py (limited to 'kmean.py') 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 + -- cgit v1.2.3-54-g00ecf