본문 바로가기

전체 글126

일반 데이터 학습용/테스트용 분리 지난번에는 이미지 데이터가 대상인 Data Augmentation의 ImageDataGenerator 를 이용하여 학습데이터를 분리하였다. 이번에는 단순히 pandas 로 읽어들인 숫자 문자등의 데이터를 분리해 보겠다. 1. numpy 를 이용하는 방법 import numpy as np def shuffle_and_split_data(data, test_ratio): np.random.seed(42) # np.random.permutation(length) : 랜덤으로 일련번호의 순서를 바꿈 shuffled_indices = np.random.permutation(len(data)) # 테스트 사이즈를 계산 test_set_size = int(len(data) * test_ratio) # 초반 test_.. 2024. 1. 14.
pydub.AudioSegment Install Package pip install pydub # 내부적으로 ffmpeg 라이브러리를 사용하기에 OS에 맞게 ffmpeg 설치 필요 불러오기 from pydub import AudioSegment wav_audio = AudioSegment.from_wav("input.wav") mp3_audio = AudioSegment.from_mp3("input.mp3") 정보 # 프레임레이트 print(wav_audio.frame_rate) # 채널수 (스테레오=2, 모노=1) print(wav_audio.channels) # 재생시간 print(wav_audio.duration_seconds) frame rate 변경 sound = audio.set_frame_rate(16000) 저장 wav_a.. 2024. 1. 14.
7. 결과분석 Time-domain analysis 값 판단기준 판정 SDNN 40.97 비건강: 100 비건강 pNN50/NN50 0.34/1 50mm이상 차이가 나는 간격수와 비율 높을수록 건강 비건강 자연로그RMSSD 2.6 범위: 0 ~ 6.5 0 ~ 100 으로 환산 (값 / 6.5 x 100) 40 건강: 70 이상 보통: 50 ~ 70 비건강: 50미만 비건강 Frequency-domain analysis 정의 약어 한글 풀네임 주파수 파워 관계 SNS 교감신경 Sympathetic Nervous Systems LF / HF PSNS(또는 PNS) 부교감신경 Parasympathetic Nervous System HF ※ HF( 주파수 0.15 ~ 0.4 Hz) 는 .. 2024. 1. 8.
6. Heart Rate Variability (HRV) 심박 변이도(HRV)의 이해와 중요성HRV란 무엇인가?심박 변이도(Heart Rate Variability, HRV)는 심박 간격의 미세한 변화를 의미합니다. 이는 연속된 심장 박동 사이의 시간이 약간씩 늘어나거나 줄어드는 현상을 말합니다.HRV는 특수 장비 없이는 인지하기 어려우나, 건강한 사람들에게도 존재합니다.심장 상태, 불안, 우울증 등 신체 및 정신 건강 상태를 반영할 수 있습니다.HRV 자체는 일반적인 현상으로, 부정맥을 의미하지 않습니다.정상적인 심박 리듬일반적인 심박은 "Sinus Rhythm"이라고 합니다.심박 간격이 0.12초보다 길 경우 "Sinus Arrhythmia"이라고 합니다.부정맥은 주로 호흡에 의해 발생하며, 정상적인 심혈관계 반응의 일부입니다.호흡과 무관한 경우, 다른 심.. 2024. 1. 7.
5. R-R Intervals R-R Intervals 계산 numpy.diff 를 이용하여 전후 피크들의 차를 구한다. # rr_peaks 는 샘플의 간격 rr_ecg = np.diff(rr_peaks) # 샘플간격을 초단위로 변환 -> 1간격 = (1000 / 샘플링) rr_ecg = rr_ecg * (1000 / 130) 인터폴레이션함수 정의 ( 주파수 분석을 위해 ) # rr_ecg 는 밀리초 단위 # x 축 = RR간격을 나열(=축적) # 나중에 1초를 4등분(=0.25초)해야 하므로 밀리초를 초로 변환(= 1000 으로 나눔) x_ecg = np.cumsum(rr_ecg) / 1000 # 위의 X축과 RRI값을 Y축으로 하는 인터폴레이션 함수를 선언 f_ecg = interp1d(x_ecg, rr_ecg, kind='cub.. 2024. 1. 7.
numpy 조건에 맞는 값들만 뽑아내기 b > 3 를 만족하는 인덱스를 a 에서 뽑아내기 a = np.array([1,1,1,2,2,2]) b = np.array([4,6,1,8,2,1]) 방법-1 new_a = a[ b > 3 ] 방법-2 new_a = a[ np.where(b>3)[0] ] 2024. 1. 7.