6 from data_about_players
import Data
8 if __name__
== '__main__':
9 main_pat_filename
= Data
.main_pat_filename
10 filename_play_other
= 'knn_other.data'
11 filename_play_ref
= 'knn_ref.data'
12 filename_play_ref_orig
= 'knn_ref_orig.data'
15 player_vector
= Data
.questionare_total
16 players_ignore
= [ "Yi Ch'ang-ho 2004-", "Yi Ch'ang-ho 2005+"] #,"Takao Shinji","Hane Naoki","Kobayashi Koichi" ]
18 players_all
= [ p
for p
in Data
.players_all
if p
not in players_ignore
]
19 players_ref
= [ p
for p
in player_vector
.keys() if p
not in players_ignore
]
20 players_other
= [ x
for x
in players_all
if x
not in players_ref
]
22 ### Object creating input vector when called
23 print >>sys
.stderr
, "Creating input vector generator from main pat file:", main_pat_filename
24 i
= InputVectorGenerator(main_pat_filename
, num_features
)
26 # Create list of input vectors
27 input_vectors_ref
= []
28 for name
in players_ref
:
29 input_vectors_ref
+= [i(Data
.pat_files_folder
+ name
)]
30 input_vectors_other
= []
31 for name
in players_other
:
32 input_vectors_other
+= [i(Data
.pat_files_folder
+ name
)]
34 if len(input_vectors_ref
) == 0:
35 print >>sys
.stderr
, "No reference vectors."
37 if len(input_vectors_other
) == 0:
38 print >>sys
.stderr
, "No vectors to process."
42 # Change this to False, if you do not want to use PCA
45 # Create PCA object, trained on input_vectors
46 print >>sys
.stderr
, "Running PCA."
47 pca
= PCA(input_vectors_ref
+ input_vectors_other
, reduce=True)
48 # Perform a PCA on input vectors
49 input_vectors_ref
= pca
.process_list_of_vectors(input_vectors_ref
)
50 input_vectors_other
= pca
.process_list_of_vectors(input_vectors_other
)
51 # Creates a Composed object that first generates an input vector
52 # and then performs a PCA analysis on it.
55 ### Object creating output vector when called;
57 for name
, input_vector
in zip(players_ref
, input_vectors_ref
):
58 ref_dict
[tuple(input_vector
)] = player_vector
[name
]
60 oknn
= KNNOutputVectorGenerator(ref_dict
, k
=k
)
62 # Create list of output vectors using weighted kNN algorithm approximating output_vector
63 output_vectors_other
= [ oknn(input_vector
) for input_vector
in input_vectors_other
]
64 output_vectors_ref
= [ oknn(input_vector
) for input_vector
in input_vectors_ref
]
66 def print_me(names
, vecs
, where
):
67 if len(names
) != len(vecs
):
68 raise RuntimeError("Dimensions of vectors mismatch.")
70 print >>sys
.stderr
, "Saving output_vectors to file:", where
72 for i
in xrange(len(names
)):
73 name_to_print
= '_'.join(names
[i
].split())
74 print_vector([name_to_print
] + list(vecs
[i
]), f
)
77 print_me(players_ref
, [player_vector
[name
] for name
in players_ref
], filename_play_ref_orig
)
78 print_me(players_ref
, output_vectors_ref
, filename_play_ref
)
79 print_me(players_other
, output_vectors_other
, filename_play_other
)
81 print >> sys
.stderr
, "\nNow plot that in Gnuplot by:"
82 #print >> sys.stderr, 'set xrange[0:%d] ; set yrange[0:%d]'%(size,size)
83 print >> sys
.stderr
, 'set xtics 1 ; set ytics 1'
84 print >> sys
.stderr
, 'set grid ; set size square'
85 print >> sys
.stderr
, 'plot "%s" using 2:3:1 with labels font "arial,11" point lt 10 pt 4 left, "%s" using 2:3:1 with labels font "arial,11" point lt 12 pt 4 left'%(filename_play_other
, filename_play_ref
)