Skip to content

Blood Pressure Estimation from PPG Signals Using Machine Learning

Notifications You must be signed in to change notification settings

HoseinRanjbar/Blood-Pressure-Estimation

Repository files navigation

Blood-Pressure-Estimation

Blood Pressure Estimation from PPG Signals Using Machine Learning

Introduction

In today's healthcare landscape, the continuous and non-invasive monitoring of blood pressure is of paramount importance, given its role as a critical indicator of cardiovascular health. This repository explores the intersection of photoplethysmography (PPG) signals and blood pressure estimation. By delving into the intricacies of PPG signals, signal processing techniques, and machine learning algorithms, we aim to bridge the gap between these signals and accurate blood pressure measurements, ultimately contributing to a future where unobtrusive and continuous blood pressure monitoring enhances patient comfort and healthcare outcomes. There is a relationship between PPG signals and blood pressure, and below, this relationship is demonstrated:

Dataset:

The dataset can be found in the ./datasets.

Phase 1

The goal in Phase 1 is to estimate blood pressure from segmented PPG signals. In below segmented PPG signals are shown:

The following steps are executed in the blood_pressure_estimation_phase1.ipynb:

  1. Loading datasets: load s1_train.npy and s1_test.npy.

  2. Preprocessing: Normalization: Elimination of short signals

  3. Baseline model: Use the average for the baseline model.

  4. Upsampling: Set the length of signals to 200 ms.

  5. Defining and training a linear regression model, followed by making predictions on a test dataset

  6. We define and train a ridge regression model and then proceed to utilize it for making predictions on a test dataset.

  7. Defining and training a lasso model, followed by using it to make predictions on a test dataset.

Phase 2

In phase 2, we are going to get a little closer to the real issue. For this purpose, we have 50 training data samples available in the 's2_train.np' file. Each sample includes the PPG signal of a patient along with the corresponding blood pressure signal. These signals were sampled at a frequency of 125 Hz and captured over a duration of 8 to 10 minutes. In this section, the objective is to design a system for estimating blood pressure from the PPG signal. To accomplish this, you need to extract both the training samples of the PPG signal and the corresponding blood pressure values from the provided signals. To do so, the following steps are executed in the blood_pressure_estimation_phase1.ipynb:

  1. Loading datasets: load s2_train.npy and s2_test.npy. Below a PPG signal is shown:

  1. Preprocessing: Normalization: Elimination of short signals

  2. Identifying the systolic and diastolic points within the signal.

  3. Baseline model: Calculate the systolic and diastolic averages for the baseline model.

  4. Upsampling: Set the length of signals to 2000 ms.

  5. Defining and training a linear regression model, followed by making predictions on a test dataset.

  6. We define and train a ridge regression model and then proceed to utilize it for making predictions on a test dataset.

  7. Defining and training a lasso model, followed by using it to make predictions on a test dataset.

About

Blood Pressure Estimation from PPG Signals Using Machine Learning

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published