J'ai profité du confinement pour me remettre à la tâche et simplement reproduire le Benchmark disponible sur GitHub.
Après quelques légères modifications* pour pouvoir disposer d'un ficher de réponse, je fais face à de nouvelles difficultés pour pouvoir soumettre le fichier de réponse.
Je vous fais grâce du code plus ou moins copié/collé depuis le Benchmark, pour arriver à la fin (après l'apprentissage) :
On charge le fichier de test :
1 2
| dataset_eval = OzeEvaluationDataset(dataset_x_path=r"C:\Users\alain\Documents\Data science\DataChallenge\x_test.csv", labels_path=r"C:\Users\alain\Documents\Data science\DataChallenge\ozechallenge_benchmark-master\labels.json")
m_test = len(dataset_eval) |
On établit les prédictions :
1 2 3 4 5 6 7 8 9
| predictions = np.zeros((m_test, K, 8))
with torch.no_grad():
for idx, line in tqdm(enumerate(dataset_eval), total=m_test):
# Run prediction
netout = net(torch.Tensor(line[np.newaxis, :, :])).numpy()
# De-normalize output
output = netout * (M - m + np.finfo(float).eps) + m
predictions[idx] = output |
On créée le fichier à soumettre pour le challenge :
1 2 3 4
| lines_output = predictions.reshape((m_test, -1))
csv_header = [f"{var_name}_{k}" for var_name in dataset_eval.labels['X'] for k in range(K)]
pd.DataFrame(lines_output, columns=csv_header).to_csv(r"C:\Users\alain\Documents\Data science\DataChallenge\y_bench120.csv") |
Là, c'est le drame : la plateforme me soumet le message d'erreur suivant 'Invalid Index : the index of the csv file you have submitted does not matcht the index of the test file'.
J'ai donc pris le fichier réponse mis en exemple sur la page du challenge :
exp = pd.read_csv(r"C:\Users\alain\Documents\Data science\DataChallenge\y_random.csv")
NB : j'ai soumis le fichier y_random sur la plateforme et cela a fonctionné.
J'ai repris mon fichier réponse nouvellement créé :
rep = pd.read_csv(r"C:\Users\alain\Documents\Data science\DataChallenge\y_bench120.csv")
J'ai regardé les différences dans les indexes :
1 2 3 4
| ind1 = exp.columns
ind2 = rep.columns
ind1.intersection(ind2)
ind1.difference(ind2) |
Avec la réponse suivante :
Index(['index'], dtype='object')
J'ai réindexé mon fichier réponse selon l'exemple :
A = rep.reindex_like(exp)
Puis comparé les indexes :
1 2
| ind3 = A.columns
ind3.difference(ind1) |
Avec comme réponse :
Index([], dtype='object')
Que j'interprète comme un ensemble vide (donc pas de différence d'indexes).
Mais en regardant de plus près, on voit des NaN au lieu des données en 7500 dans la colonne index :

J'ai donc remplacé les valeurs :
1 2
| for i in range(500):
A['index'][i]=exp['index'][i] |
Mais cela me donnait des float au lieu d'int, du coup j'ai forcé le truc :
1 2
| C = B['index'].astype(int)
print(C) |
Puis enfin:
pd.DataFrame(B, columns=csv_header).to_csv(r"C:\Users\alain\Documents\Data science\DataChallenge\y_bench200.csv")
Mais le nouveau fichier renvoie toujours le même message d'erreur à mon grand désespoir... : 'Invalid Index : the index of the csv file you have submitted does not matcht the index of the test file'
Auriez-vous des idées pour faire matcher les indexes ?
* la principale modification a porté sur le fait de mettre NUM_WORKERS = 0 (au lieu de 4) - étant sous Windows avec Jupyter (je n'ai pas le pourquoi du comment, mais l'essentiel est que cela fonctionne...)
Partager