-
Notifications
You must be signed in to change notification settings - Fork 0
/
databasehashai.py
63 lines (54 loc) · 2.26 KB
/
databasehashai.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import numpy as np
from matplotlib import pyplot as plt
import umarutils as u
# def showdist():
# a = np.digitize(np.random.random(100*100),
# [0.8]).reshape((100,100))
# plt.imshow(a)
# plt.show()
# def digitizedata(data,digitizations):
# maxv = np.max(data)
# minv = np.min(data)
# digitizeddatalist = []
# for x in range(2,digitizations):
# bins = np.ones(x).cumsum()/x
# digitizeddatalist.append(np.digitize(data,bins))
# digitizeddata = np.asarray(digitizeddatalist).flatten()
# return digitizeddata
# def createselectors(size,number):
# return np.digitize(np.random.random((size,number)),
# [0.9])
# def selectorize(selectors,data,digitizations):
# return selectors*digitizedata(data,digitizations)
def createrandomprojections(amount,size,file):
u.writepickle(file,np.random.random((amount*size)))
print "written random projections in ",file
# def createrandomcuts(amount,size,file):
# u.writepickle(file,np.random.randint(0,2,(amount*size)))
# print "written random cuts in ",file
def randomprojectiondigitizehash(data,,
randomprojections,
digitizations):
projection = np.repeat(data,randomprojection.size/data.size)*randomprojections
maxv = np.max(projection)
minv = np.min(projection)
digitizationslist = []
for x in range(2,digitizations):
bins = np.ones(x).cumsum()/x
digitization = np.digitize(projection,bins)
digitizationslist.append(digitization)
return digitizationslist
def saveprojectionhashes(data,label,randomprojections,
digitizations,directory):
for x in randomprojectiondigitizehash(data,
randomprojections,
digitizations):
u.writefile(label,directory+str(hash(x)))
def matchprojections(data,randomprojections,digitizations,
directory):
labels = []
for x in randomprojectiondigitizehash(data,
randomprojections,
digitizations):
labels.append(u.readfile(directory+str(hash(x))))
return labels