summaryrefslogtreecommitdiffstats
path: root/data/svm
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2012-03-05 18:10:36 -0800
committerThibaut Horel <thibaut.horel@gmail.com>2012-03-05 18:10:36 -0800
commit538fca8c33267890d574ef0e9a7a5642ad793f36 (patch)
treec4fc587291e13b3028b4bff4843b3dcab9043b15 /data/svm
parentc6b28be394f2cab27500821f3325bafa9093ced4 (diff)
downloadkinect-538fca8c33267890d574ef0e9a7a5642ad793f36.tar.gz
Last code change in data processing, in case we need it for camera ready
Diffstat (limited to 'data/svm')
-rwxr-xr-xdata/svm/classification.py30
1 files changed, 16 insertions, 14 deletions
diff --git a/data/svm/classification.py b/data/svm/classification.py
index b8c0ae6..c1cec68 100755
--- a/data/svm/classification.py
+++ b/data/svm/classification.py
@@ -19,35 +19,37 @@ def normalize(a,weights=None):
a[:,i] = (column-weights[i][0])/weights[i][1]
return a,weights
-def read_filter(filename) :
+def read_filter(filename,nameset=None) :
a = np.loadtxt(filename,comments="#",delimiter=",",
usecols=(1,4,5,6,7,8,9,10,11,12,13,14,15))
#remove rows with missing values, filter data
indexes = [i for i in range(a.shape[0]) if -1 not in a[i]]
a = a[indexes]
+ #a = a[(a!=-1).all(1)]
+
+ if nameset != None:
+ indexes = [i for i in range(a.shape[0]) if a[i,0] in nameset]
+ a = a[indexes]
+
distance = a[:,1]
variance = a[:,2]
diff = a[:,3]
- a = a[(distance>2) & (distance<3.2) & (diff<0.5)]
+ a = a[(distance>2) & (distance<3.2)]# & (diff<0.5)]
return a
-def normalize_filter(a,weights=None,nameset=None):
+def normalize_filter(a,weights=None):
#normalize data
if weights==None:
weights = {i:None for i in range(4,13)}
a,weights = normalize(a,weights)
- if nameset != None:
- indexes = [i for i in range(a.shape[0]) if a[i,0] in nameset]
- a = a[indexes]
-
return list(a[:,0]),[{i+1:v for i,v in enumerate(row[4:])} for row in a],weights
-def perform_svm(a,b,nameset=None):
- y1,x1,weights = normalize_filter(a,nameset=nameset)
+def perform_svm(a,b):
+ y1,x1,weights = normalize_filter(a)
model = svm_train(y1,x1)
- y2,x2,weights = normalize_filter(b,weights=weights,nameset=nameset)
+ y2,x2,weights = normalize_filter(b,weights=weights)
p_labels,p_acc,p_vals = svm_predict(y2,x2,model)
return p_labels,p_acc,p_vals
@@ -68,11 +70,11 @@ if __name__ == "__main__":
random.seed()
train_filename = sys.argv[1]
test_filename = sys.argv[2]
- log_filename = open(sys.argv[3],"w")
- a = read_filter(train_filename)
- b = read_filter(test_filename)
main_set = Set(range(1,26)).difference(Set([13,19,3]))
- perform_svm(a,b,nameset=main_set)
+ log_filename = open(sys.argv[3],"w")
+ a = read_filter(train_filename,nameset=main_set)
+ b = read_filter(test_filename,nameset=main_set)
+ perform_svm(a,b)
#for i in [6]:
# accuracy_subsets(i)