| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import math
- import tensorflow as tf
- import numpy as np
- from sklearn.neighbors import NearestNeighbors
- from library.timing import timing
- class NNSearch:
- def __init__(self, nebSize=5, timingDict=None):
- self.nebSize = nebSize
- self.neighbourhoods = []
- self.timingDict = timingDict
- def timerStart(self, name):
- if self.timingDict is not None:
- if name not in self.timingDict:
- self.timingDict[name] = timing(name)
- self.timingDict[name].start()
- def timerStop(self, name):
- if self.timingDict is not None:
- if name in self.timingDict:
- self.timingDict[name].stop()
- def neighbourhoodOfItem(self, i):
- return self.neighbourhoods[i]
- def fit(self, X, nebSize=None):
- self.timerStart("NN_fit_chained_init")
- if nebSize == None:
- nebSize = self.nebSize
- nPoints = len(X)
- nFeatures = len(X[0])
- neigh = NearestNeighbors(n_neighbors=nebSize)
- neigh.fit(X)
- self.timerStop("NN_fit_chained_init")
- self.timerStart("NN_fit_chained_toList")
- self.neighbourhoods = [
- (neigh.kneighbors([x], nebSize, return_distance=False))[0]
- for (i, x) in enumerate(X)
- ]
- self.timerStop("NN_fit_chained_toList")
|