카테고리 없음

[내일배움 부트캠프] 06.04

tundercloud 2026. 6. 4. 20:23

 벌써 목요일이다. 루틴처럼 Atani와 코드카타를 풀었다. 그리고 저녁시간 전까지 개인 과제를 풀었다. 중간에 라이브세션도 들어주면서 하니까 생각보다 시간이 걸렸다. seaborn에 대해 배웠는데 matplotlib과는 다르게 코드도 짧고 간결하며 좀 더 트렌드한 그래프가 만들어져서 흥미로웠다. 

 오늘 개인과제에 시간을 할애한만큼 금요일에는 이번주에 배웠던걸 다시 복습하면서 다음주에 있을 기초프로젝트를 목 닦고 기다려야겠다. (채용공고 눈팅만 하지말고 이력서도 좀 넣고...)


🤖 Atani

Q1.

정답 : A

추세 (Trend) : 시계열 데이터에서 장기적으로 나타나는 증가 또는 감소의 전반적인 방향성

B : 계절성(Seasonality)에 대한 설명

C : 잔차(Residual)에 대한 설명

D : 잔차의 일부 특성만을 설명한 것


Q2. 

 정답 : C

가법 모형(Additive Model) 승법 모형(Multiplicative Model)
계절성의 변동 폭이 일정할 때 사용 (Y=T+S+R) 계절성의 변동 폭이 추세 수준에 비례하여 변할때 사용 (Y=T*S*R)

Q3.

 정답 : A

A : result.trend 는 추세 성분

B : result.seasonal 은 계절성 성분

C : result.resid 는 잔차 성분

D : result.observed 는 원본 데이터를 나타냄.


Q4.

 정답 : D

Residual (잔차)는 Trend와 Seasonality를 제거한 후 남은 불규칙한 변동으로, 예측 불가능한 랜덤한 노이즈를 나타낸다.

→ Residual에서 규칙적인 패턴이 발견된다면 이는 모델이 데이터의 구조를 충분히 포착하지 못했다는 뜻이다.

Trend는 장기적 추세, Seasonality는 주기적 반복 패턴을 의미하며, 이 두 요소를 제거한 후 남은 것이 Residual이다.


Q5. 

 정답 : B

Seasonality : 일정한 주기(계절, 월, 요일 등)로 반복되는 패턴 → B) 아이스크림 판매량이 매년 여름과 겨울에 규칙적으로 증감하는 패턴

A, D : Trend (장기적 추세)의 예시

C : Residual (불규칙 변동)의 예시


🤔

 Atani와 오늘 라이브세션에서 다뤄서 시계열 데이터에 대한 개념을 완벽하게 이해할 수 있었다. 또한 추세, 계절성, 잔차의 차이를 구분할 수 있게 되었다. 규칙적인 패턴과 불규칙적인 패턴을 확실하게 구분해서 생각해야겠다 싶었다.


⌨️ 코드카타 

● 41번 ●

 

● 42번 ●

● 43번 ●

● 44번 ●

● 45번 ●

1단계: ord(char) - ord('A') → "기차 칸 번호로 바꾸기"

  • ord('Z')는 컴퓨터 방 번호로 90입니다. ord('A')는 65
  • 계산해보면: $90 - 65 = 25
  • 원리: 'A'를 기준으로 삼아 뺐더니, 'Z'는 알파벳의 25번째 기차 칸이라는 것이 나옴. (알파벳은 0번 'A'부터 25번 'Z'까지 총 26개)

2단계: + n → "기차 출발! 전진하기"

  • 25번째 칸에 있던 기차를 n(2칸)만큼 앞으로 밀어줌.
  • 계산해보면: $25 + 2 = 27
  • 문제 발생: 알파벳 기차 칸은 25번('Z')이 끝인데, 27번 칸은 존재하지 않습니다! 일렬로 타면 기차가 선로를 탈선하게 됨.

3단계: % 26 → "원형 선로로 탈선 막기 (한 바퀴 돌리기)"

  • 퍼센트(%) 기호는 나눈 나머지를 구하는 연산자임. 알파벳이 총 26개니까 26으로 나눠줌.
  • 계산해보면: 27 % 26 → 27을 26으로 나누면 몫은 1이고 나머지는 1이 됨.
  • 원리: 25번('Z')을 지나쳐서 생긴 27번은, 원형 선로를 한 바퀴 돌아서 다시 1번 칸이 됨. (0번이 'A'니까, 1번 칸은 'B' 자리!)  26을 넘어가도 안전하게 다시 처음으로 돌아오게 만듬.

4단계: + ord('A') 그리고 chr(...) → "진짜 컴퓨터 방 번호로 복구해서 문자로 바꾸기"

  • 아까 1단계에서 65(ord('A'))를 빼서 기차 칸으로 만들었기 때문에 이제 다시 진짜 컴퓨터 방 번호로 돌려주기 위해 65를 더함.
  • 계산해보면: 1번 칸 + 65 = 66
  • 최종적으로 chr(66)을 실행하면 컴퓨터 방 번호 66호에 살고 있는 문자 'B'가 나오게 됨!

🤔 

오늘부터 레벨3 문제라 그런지 푸는데 오래 걸렸다. 3문제 푸니까 10시였다. 그래도 하루 5문제가 목표였기에 44번, 45번을 풀려고 했는데 45번이 코드를 어떻게 짜야될지 몰라서 지피티의 도움을 좀 받았다. 직관적으로 이해하기 쉽게 정리해서 초보티가 보이지만 이해는 되서 다음에도 알파벳 문제가 나오면 참고할 수 있을 것 같다.


📝 개인 과제

 

두 코드에서 결측치를 다르게 작성해야하는걸 알게 되었다. 

np.nanNumpy 라이브러리를 사용하는 것이고, pd.NApandas 라이브러리를 사용하는 것 이기때문이다.

 

- pd.cut ( ) : 연속적인 숫자 데이터를 여러 개의 구간(bin)으로 나눈다.

ex)

import pandas as pd
score = [45, 65, 82, 95]
bins = [0, 60, 80, 100]
labels = ['낮음', '보통', '높음']


pd.cut(score, bins=bins, labels=labels)

 

◆ 결과

45 → 낮음
65 → 보통
82 → 높음
95 → 높음

 

- include_lowest = True : 첫번째 구간의 최소값도 포함시킨다.

ex) bins = [0, 2, 5, 10]

일 때 기본 구간은 

(0, 2]

(2, 5]

(5, 10]

( : 포함 안함,  ]  : 포함함

include_lowest = False (기본값)

0 → 어떤 구간에도 포함되지 않음 (NaN)

1 → (0, 2]에 포함

2 → (0, 2]에 포함

 

- index를 넣어야하는 이유 : 범주 이름을 가지고 있어서 파이 조각의 이름을 표시하기 위해

 

1. index 없을 때

2. index 있을 때