Как правильно пометить столбцы в наборе данных tenorflow при импорте из немаркированного csv? - PullRequest
0 голосов
/ 23 октября 2019

Вопрос и MWE

У меня есть некоторые данные в CSV-файле без заголовков, таких как: labels = ["a", "b", "c", "d"] в столбцах. Я использую Numpy для импорта данных в набор данных Tensorflow. Мой MWE выглядит так:

import tensorflow as tf

dataset = tf.convert_to_tensor(np.loadtxt("csvfile.csv", delimiter=',', dtype="uint32"), dtype=tf.uint32)

Когда я смотрю на вывод из dataset, я вижу то, что ожидаю:

<tf.Tensor: id=2, shape=(1545, 4), dtype=uint32, numpy=
array([[    68,    442,    730,  40000],
       [    71,    857,    609, 150000],
       [    71,    857,    609, 110000],
       ...,
       [   295,    615,    145,  50000],
       [   297,    443,    854,  10000],
       [   298,    541,    309,  20000]], dtype=uint32)>

Как лучше всего пометить эти столбцына данный момент в сценарии?

Очевидный ответ, который не работает

Я не хочу редактировать файл CSV перед запуском моего кода Python, например, вставка заголовков вручную в 4столбцы . В моем случае я не могу предположить, что у меня всегда будет доступ к CSV-файлу.

Что я пытался

Я попытался прикрепить заголовки к вершине numpy объекта с помощью:

fff = np.loadtxt("csvfile.csv", delimiter=',', dtype="uint32")
fff = np.vstack((np.array(("a", "b", "c", "d")), fff))
dataset = convert_to_tensor(fff, dtype=tf.uint32)

Но это очевидно не удается из-за смешанного кодирования.

1 Ответ

0 голосов
/ 25 октября 2019

Это можно сделать с помощью словаря без изменения исходных данных. В этом случае:

import tensorflow as tf
import numpy as np

fff = np.loadtxt("csvfile.csv", delimiter=',', dtype="uint32")
mydict = {"a": fff[:, 0], "b": fff[:, 1], "c": fff[:, 2], "d": fff[:, 3]}
dataset = tf.data.Dataset.from_tensor_slices((mydict["a"], mydict["b"], mydict["c"], mydict["d"]))

Данные можно проверять, просматривая вложенный тензор:

for i in dataset:
    print(i[0].numpy()) #prints the "a" entry
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...