5 from itertools
import izip
8 from data_about_players
import Data
10 if __name__
== '__main__':
11 root_dir
= '../pdb-gtl/'
12 main_pat_filename
= root_dir
+ 'all.pat'
13 player_vector
= Data
.strength_linear_vector
16 ### Object creating input vector when called
17 print >>sys
.stderr
, "Creating input vector generator from main pat file:", main_pat_filename
18 i
= InputVectorGenerator(main_pat_filename
, num_features
)#, rescale=LogRescale)
20 #raw = root_dir + 'testpat_files'
22 import os
, random
, shutil
23 ranks
= os
.listdir(raw
)
26 plays
= os
.listdir(raw
+ '/'+ rank
)
28 tot
[raw
+ '/' + rank
+ '/' + play
] = rank
31 train_set_dir
= root_dir
+ 'train_set'
32 test_set_dir
= root_dir
+ 'rawpat_files_merged_test'
33 train_dict
= list_dir(train_set_dir
)
34 test_dict
= list_dir(test_set_dir
)
37 input_vectors_train
= []
38 for f
, rank
in train_dict
.items():
40 input_vectors_train
+= [i(f
)]
45 input_vectors_test
= []
48 for f
, rank
in test_dict
.items():
50 input_vectors_test
+= [i(f
)]
58 #if len(input_vectors_train) == 0:
59 # print >>sys.stderr, "No reference vectors."
61 if len(input_vectors_test
) == 0:
62 print >>sys
.stderr
, "No vectors to process."
66 # Change this to False, if you do not want to use PCA
69 # Create PCA object, trained on input_vectors
70 print >>sys
.stderr
, "Running PCA."
71 pca
= PCA(input_vectors_train
, reduce=True)
72 # Creates a Composed object that first generates an input vector
73 # and then performs a PCA analysis on it.
77 return [ (1-x
) * 16.5 - 3.0 for x
in vec
]
80 return list(2.0*numpy
.random
.random(k
)-1.0)
83 # Create list of output vectors using weighted kNN algorithm approximating output_vector
84 output_vectors
= [ revnorm( [-pca(iv
)[0]] ) for iv
in input_vectors_test
]
85 desired_vectors
= [ revnorm(player_vector
[rank
]) for rank
in test_pl
]
88 for f
, out
, des
in zip(test_files
, output_vectors
, desired_vectors
):
91 print f
, "%2.3f ; %2.3f"%(out
[0], des
[0])
94 diff
= [ abs(x
[0] - y
[0]) for x
,y
in zip(output_vectors
,desired_vectors
) ]
95 zips
= zip(diff
, test_files
)
98 print a
, " %2.3f"%(diff
,)
101 for o
,d
in zip(output_vectors
, desired_vectors
):
108 mean
= numpy
.array(errs
).mean()
109 print "Mean square err: " + "%2.3f ( = sd %2.3f) "%(mean
, sqrt(mean
))