Используйте LSTM для прогнозирования газов артериальной крови по данным PPG - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок в машинном обучении и пытаюсь предсказать газы артериальной крови (ABG) на основе сигнала фотоплетизмографии (PPG). Я использую Tesnsorflow с node.js, но ответы на основе Python также очень ценятся.

Из того, что я исследовал, мне кажется, что лучшим подходом для этого была бы модель регрессии LSTM , поскольку данные представляют собой временные ряды, а метки / цели представляют собой диапазон чисел. Я открыт для использования и других моделей.

Так что используемая функция - это данные ppg, а на выходе - средние данные ABG, основанные на мм рт. Ст. Я нормализовал данные ppg, а затем разделил данные на 80% обучения и 20% теста.

Данные ppg, которые вводятся в LSTM, формируются в 200 временных шагов, форма выглядит как [ 10000, 200, 1]. А данные ABG имеют форму [10000] и выглядят как [90, 90, 90, ..., 80, 80, 80, ... 110, 110, 110].

Затем я создаю модель, подобная этой:

model.add(
    tf.layers.lstm({
      units: 32,
      inputShape: [200, 1]
    }
));

model.add(tf.layers.dense({ units: 1 }));

model.compile({
    loss: 'meanSquaredError',
    optimizer: 'adam'
  });

  const features = tf.tensor(X_train);
  const targets = tf.tensor(y_train);

  const history = await model.fit(features, targets, {
    epochs: 10,
    batchSize: 32,
    validationSplit: 0.1,
    shuffle: false
  });

Я думаю, что мне понадобится добавить другие слои для повышения точности.

Затем я попытаюсь предсказать ABG с моими данными испытаний, но результаты Кажется, далеко:

const xsTest = tf.tensor(X_test);
const y_pred = model.predict(xsTest);
const predictions = y_pred.arraySync();
console.log('predictions',predictions);

Кто-нибудь видел какие-либо ошибки в этом? Очки в правильном направлении также приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...