Я новичок в машинном обучении и пытаюсь предсказать газы артериальной крови (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);
Кто-нибудь видел какие-либо ошибки в этом? Очки в правильном направлении также приветствуются.