30.3 배터리 데이터셋과 데이터 함정

실습 · 연습문제 1개

잡음 있는 용량 기록에서 수명 label 만들기 cycle-life-label

수명 예측의 정답 label인 "사이클 수명"은 용량 기록에서 계산한다. 용량이 처음으로 기준값 아래로 떨어지는 사이클을 찾으면 되지만, 실제 기록에는 측정 잡음과 일시적인 튐, 결측 사이클이 있고, 시험이 끝날 때까지 기준에 닿지 않은 셀도 있다.

함수 cycle_life(cycle, capacity_ah, ref_ah, frac=0.8, window=5)를 완성한다.

인자 설명
cycle (N,) 사이클 번호. 증가하지만 연속이 아닐 수 있다(결측 사이클)
capacity_ah (N,) 사이클별 방전 용량 [Ah]. 측정 실패는 NaN
ref_ah SOH의 기준 용량 [Ah] (공칭 용량이나 첫 측정 용량)
frac EOL 기준 비율. 기준 용량은 frac * ref_ah
window 잡음을 누르기 위한 후행 이동 중앙값의 창 크기

반환은 (life, observed) 튜플이다.

  • 위치 kk의 평활 용량은 capacity_ah[max(0, k - window + 1) : k + 1]에서 NaN을 뺀 값들의 중앙값이다. 이 창이 모두 NaN이면 위치 kk는 건너뛴다.
  • 평활 용량이 처음으로 frac * ref_ah보다 작아지는 위치 kk를 찾으면 (cycle[k], True)를 반환한다.
  • 끝까지 떨어지지 않으면 시험이 수명보다 먼저 끝난 것이다(중도절단). (cycle[-1], False)를 반환한다. 이 셀의 수명은 "적어도 cycle[-1]"이라는 정보만 있다.

후행(과거 쪽) 창을 쓰는 이유는, 각 시점의 label이 그 시점까지의 측정만으로 정해지게 하기 위해서다. 중앙값을 쓰는 이유는 한두 사이클의 튐에 label이 끌려가지 않게 하기 위해서다.