2016-08-09 18 views
6
from keras.utils import np_utils 
uniques, ids = np.unique(arr, return_inverse=True) 
coded_array = np_utils.to_categorical(ids, len(uniques)) 
encode_dict ={} 
for i,j in zip(arr,coded_array): 
     encode_dict[i] = j 
     if len(encode_dict)==len(np.unique(arr)): 
      break 
return coded_array,encode_dict 

Ters np_utils.to_categoricalEşleme Dictionary</p> <p>Örnek

{{'HOME': array([ 0., 0., 1.]), 'DRAW': array([ 0., 1., 0.]), 'AWAY': array([ 1., 0., 0.])} 

giriş

['DRAW' 'HOME' 'HOME' ..., 'HOME' 'HOME' 'AWAY'] 

Kodlu çıkış

[[ 0. 1. 0.] 
[ 0. 0. 1.] 
[ 0. 0. 1.] 
..., 
[ 0. 0. 1.] 
[ 0. 0. 1.] 
[ 1. 0. 0.]] 

Bu işlev nasıl tersine çevrilir ve kod çözme işlevi nasıl alınır?

+0

sen 'ids' almak ya' arr' için arıyorsunuz -

uniques[y_code.argmax(1)] 

Numune çalıştırmak - şöyle Böylece, bir uygulama olurdu? Eğer 'arr' ise, ben de 'uniques' ye ihtiyacımız var. – Divakar

+0

Arr için arıyorum – hks014

+0

Yani, 'decode() 'için de' uniques 'var mı? – Divakar

cevap

6

np.argmax'unumaralı telefonu geri almak için kullanabilirsiniz ve daha sonra uniques içine dizine eklemek orijinal diziyi size vermelidir.

In [44]: arr 
Out[44]: array([5, 7, 3, 2, 4, 3, 7]) 

In [45]: uniques, ids = np.unique(arr, return_inverse=True) 

In [46]: y_code = np_utils.to_categorical(ids, len(uniques)) 

In [47]: uniques[y_code.argmax(1)] 
Out[47]: array([5, 7, 3, 2, 4, 3, 7]) 
+0

kodlamada dönen iki öğe ile benim dizilim str [a, b, c, d, e] gibi bir str varsa – hks014

+0

@ hks014 Burada a ', 'b', .. dizeleri veya rakamlar veya başka bir şey? – Divakar

+0

[kedi, köpek, kuş, balık] gibi bir şey kodladıktan sonra [[0,0,1], [0,1,0], [0,1,1], [1,0,0 ]] – hks014