Загрузка CSV для выполнения логического вывода в тензорном потоке. js - PullRequest
1 голос
/ 09 апреля 2020

Я пробовал несколько способов разбора CSV. У меня есть CSV-файл. Я хочу получить массивы из данных. Pandas эквивалент

pd.read_csv('csv_file.csv').values  # returns [100, 14] dim array

Я пробовал анализ папы для анализа файла CSV.

let parsed_data = papa.parse(file, 
         {
         header: true ,
         newline: '\n',
         dynamicTyping: true,
         complete:function(results)
           {
                data = results.data; 
           }}
);

Возвращает массив [100,1] dim. Я попытался tf.data.csv, и это не похоже на работу

async function parse_data(){
  csvDataset = tf.data.csv(data_path,
    {
      hasHeader: true
    }
  );
  console.log(csvDataset);
};

Console.log returns Object { size: null, input: {…}

Я хочу сделать вывод, что-то вроде этого (Python эквивалент)

model.predict(tf.tensor(pd.read_csv('csv').values))

1 Ответ

1 голос
/ 09 апреля 2020

tf.data.csv возвращает tf.csv.Dataset, который является асинхронным c итератором. Данные могут быть получены для создания тензора. Подобный вопрос был задан здесь

const csvUrl =
'https://storage.googleapis.com/tfjs-examples/multivariate-linear-regression/data/boston-housing-train.csv';

async function run() {

  const csvDataset = tf.data.csv(
    csvUrl, {
      columnConfigs: {
        medv: {
          isLabel: true
        }
      }
    });

  const numOfFeatures = (await csvDataset.columnNames()).length - 1;

  // Prepare the Dataset for training.
  const flattenedDataset =
    csvDataset
    .map(({xs, ys}) =>
      {
        // Convert xs(features) and ys(labels) from object form (keyed by
        // column name) to array form.
        return {xs:Object.values(xs), ys:Object.values(ys)};
      })
    //.batch(10);

const it = await flattenedDataset.iterator()
   const xs = []
   const ys = []
   // read only the data for the first 5 rows
   // all the data need not to be read once 
   // since it will consume a lot of memory
   for (let i = 0; i < 5; i++) {
        let e = await it.next()
      xs.push(e.value.xs)
      ys.push(e.value.ys)
   }
  const features = tf.tensor(xs)
  const labels = tf.tensor(ys)

  console.log(features.shape)
  console.log(labels.shape)

}

run();
...