J'ai un tableau numérique (N, M) où certaines des colonnes doivent être codées à chaud unique. S'il vous plaît, aidez à faire un encodage à chaud en utilisant numpy et/ou tensorflow.codage à chaud unique et données existantes
Exemple:
[
[ 0.993, 0, 0.88 ]
[ 0.234, 1, 1.00 ]
[ 0.235, 2, 1.01 ]
.....
]
La 2ème colonne ici (avec les valeurs 3 et 2) doit être un codé à chaud, je sais qu'il n'y a que trois valeurs distinctes (0, 1, 2).
Le tableau résultant devrait ressembler à:
[
[ 0.993, 0.88, 0, 0, 0 ]
[ 0.234, 1.00, 0, 1, 0 ]
[ 0.235, 1.01, 1, 0, 0 ]
.....
]
Comme que je serais en mesure d'alimenter ce tableau dans le tensorflow. Veuillez noter que la deuxième colonne a été supprimée et que sa version à chaud a été ajoutée à la fin de chaque sous-tableau.
Toute aide serait grandement appréciée. Merci d'avance.
Mise à jour:
Voici ce que j'ai en ce moment: Eh bien, pas exactement ... 1. J'ai plus de 3 colonnes dans le tableau ... mais je veux encore faire seulement 2 .. 2. premier tableau est structuré, à savoir sa forme est (N,)
Voici ce que j'ai:
def one_hot(value, max_value):
value = int(value)
a = np.zeros(max_value, 'uint8')
if value != 0:
a[value] = 1
return a
# data is structured array with the shape of (N,)
# it has strings, ints, floats inside..
# was get by np.genfromtxt(dtype=None)
unique_values = dict()
unique_values['categorical1'] = 1
unique_values['categorical2'] = 2
for row in data:
row[col] = unique_values[row[col]]
codes = np.zeros((data.shape[0], len(unique_values)))
idx = 0
for row in data:
codes[idx] = one_hot(row[col], len(unique_values)) # could be optimised by not creating new array every time
idx += 1
data = np.c_[data[:, [range(0, col), range(col + 1, 32)]], codes[data[:, col].astype(int)]]
essayer de concaténer également via:
print data.shape # shape (5000,)
print codes.shape # shape (5000,3)
data = np.concatenate((data, codes), axis=1)
deuxième col avait des valeurs 0,1,2. Je ne vois pas comment cela a créé le tableau ajouté codé à chaud unique. Typo peut-être? – Divakar
0 est codé 0, 0, 0. 1 est codé 0, 1, 0. 2 est codé 1, 0, 0 – user3489820
Je n'ai pas besoin d'avoir une représentation binaire exacte des valeurs. Je veux dire si 2 sera codé comme 0, 0, 1 et 1 sera codé comme 1, 0, 0 c'est aussi bien pour moi, mais je pense que 0 devrait être codé comme 0, 0, 0. – user3489820