J'ai un fichier .csv avec des données dont je veux transformer certaines colonnes en un seul. Le problème se produit dans la deuxième dernière ligne, où l'index un-chaud (par exemple la première fonctionnalité) est placé dans toutes les lignes au lieu de celui dans lequel je suis actuellement. Il semble y avoir un problème avec la façon dont j'accède à la liste 2D ... des suggestions? merciun codage à chaud, éléments de la liste d'accès
def one_hot_encode(data_list, column):
one_hot_list = [[]]
different_elements = []
for row in data_list[1:]: # count different elements
if row[column] not in different_elements:
different_elements.append(row[column])
for i in range(len(different_elements)): # set variable names
one_hot_list[0].append(different_elements[i])
vector = [] # create list shape with zeroes
for i in range(len(different_elements)):
vector.append(0)
for i in range(1460):
one_hot_list.append(vector)
ind_row = 1 # encode 1 for each sample
for row in data_list[1:]:
index = different_elements.index(row[column])
one_hot_list[ind_row][index] = 1 # mistake!! sets all rows to 1
ind_row += 1
Il y a encore une erreur tiret après la première instruction 'if'. – strubbly
Bonjour, si une réponse a déjà trouvé réponse à votre question, merci de considérer [l'accepter] (https://meta.stackexchange.com/q/5234/179419) en cochant la case à cocher qui lui est adjacente. Ceci indique à la communauté plus large que vous avez trouvé une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation de le faire. – Lafexlos
J'ai enlevé le mot "(résolu)" du titre de la question. (La plupart des futurs utilisateurs qui ont des problèmes ne vont pas chercher leur problème en utilisant un terme de "résolu"). La bonne façon de dire que votre problème est résolu est d'accepter l'une des réponses - voir le lien dans le commentaire de Lafexlos. – YowE3K