본문 바로가기

데이터분석

(5)
시계열에서 변화된 지점 찾기 : Change Point Detection (CPD) 기법 이번에 소개해드릴 내용은 시계열이나 신호 데이터에서 변화를 찾는 기법인 Change point detection입니다. 진행했던 프로젝트에서 공정 과정에서 유의미한 피처를 도출하기 위한 하나의 작업으로 Segmentation을 진행했고, Segmentation을 하기 위해 Change point detection 기법을 활용했습니다. 최종 목표는 유의미한 피처 도출이었고, 데이터의 변화가 발생한 구간을 나눠 보다 유의미한 피처를 도출하고자 하였습니다. 해당 글에서는 Change point detection 이 무엇인지, 어떻게 활용되는지, 알고리즘에는 어떤 것들이 있는지 간단한 실습과 함께 설명하고자 합니다. 1. CPD 개요  CPD(Change Point Detection)이란 시계열 데이터의 특성(..
[데이터시각화] 지수표현(+e)된 축 눈금 일반 숫자 형식으로 바꾸기 데이터를 시각화하다가 y축 눈금이 지수표현(과학적 표기법)으로 되어 있으면 보기가 불편하다. 해당 표기법을 일반 숫자 형식으로 변형하여 시각화하는 방법은 matplotlib.pyplot 모듈의 ticklabel_format 함수를 이용하면 된다. (상세 페이지 : matplotlib.pyplot.ticklabel_format()) matplotlib.pyplot.ticklabel_format(*, axis='both', style='', scilimits=None, useOffset=None, useLocale=None, useMathText=None) - axis : 포멧할 축 설정, {'x', 'y', 'both'} - style : 일반 숫자 형식 / 과학적 표기법, {'sci', 'scientif..
[데이터시각화] 시계열 그래프 위에 결측정보 text로 겹치지 않게 표시하기 시계열 데이터를 다루다가 데이터가 지속적으로 수집되지 않고 중간 중간 결측이 발생하고 있음이 발견되었다. 결측이 발생하게 되면 모델 학습과 운영에 있어서 크리티컬한 문제기 때문에 결측을 채우는 것이 맞는지, 결측을 어떻게 채워야 하는지, 모든 값에 대해서 채우는 것이 맞는지 고민이 필요하다. 결측에 대해서 단순히 전체 데이터의 결측 개수나 비율을 계산하여 판단할 수도 있겠지만, 시계열 데이터에서는 데이터의 연속성이 중요하기 때문에 데이터의 결측이 연속적으로 얼마나 지속되었는지 살펴 볼 필요가 있다. 그래서 결측에 대해 직관적으로 살펴보기 위해 시계열 그래프를 그려 살펴보고자 했고, 결측이 얼마나 지속되었는지에 따라 결측 보간방법을 다르게 하기 위해 특정 시간 이상 결측이 지속되는 경우는 따로 표시했다. ..
[Python] 조건에 해당하는 array 값 변경 dataframe 보다 numpy 배열이 훨씬 빠르기도 하고, 딥러닝 모델의 input을 위해 array로 변환하여 처리해야 하는 일이 많다. 데이터프레임에서 조건에 맞는 행을 필터링해서 값을 변경하는 것처럼 numpy 배열에서도 조건에 맞는 원소를 변경하려면 어떻게 해야 할까? 1) np.where 절로 조건에 해당하는 인덱스를 가져오기 # 예시로 사용할 배열 생성 arr = np.array([[0.1, 0.6, 0.3, 0.8, 0.2], [0.7, 0.4, 0.9, 0.2, 0.5], [0.3, 0.2, 0.6, 0.7, 0.1], [0.8, 0.1, 0.5, 0.4, 0.9]]) # 2번 열과 4번 열에서 0.5를 초과하는 값의 인덱스 가져오기 indices = np.where(arr[:, [2,..
[Python] min-max 벗어난 값을 min, max값으로 대체하기 일반적으로 데이터 정규화를 위해 min-max scaling을 많이 사용한다. 하지만 min-max scaling의 단점은 기준이 scaling이 데이터의 min 값과 max값을 기준으로 이루어지기 때문에 아래와 같은 단점을 갖는다. ① 이상치에 영향을 많이 받는다. ② 운영 시 min, max값이 넘는 값이 유입되면 에러가 발생한다. 이상치는 min-max scaling 하기 전 제거하고 scaling을 하면 어느 정도 해결할 수 있으나 운영 상에서 기존 데이터 범위 외 데이터가 새롭게 들어올 경우는 코드를 추가해 미리 대비를 해야 한다. min-max값 범위 외 데이터가 유입되는 경우에 min-max scaling 결과의 예상 범위인 0~1을 넘는 데이터가 생겨나는데 이 때, np.maximum과 n..