Today I learned
1. 시계열 4회차 문제풀이
Q1. 시계열 모델링을 마친 후 잔차분석
- p-value가 0.05보다 크면 귀무가설을 채택(잔차는 상관관계가 없다)
- 잔차가 백색소음을 보이므로, 모델이 데이터를 지지하고 있다 = 특정한 패턴 없이 데이터가 무작위성을 띈다
- ACF
- 잔차의 자기상관함수 막대가 모두 신뢰구간(파란 음영) 안쪽에 있다
- 잔차들 사이에 유의미한 상관관계가 없다는 의미
- Ljung-Box
- 귀무가설: 잔차 간 상관관계가 없다
- 대립가설: 잔차 간 상관관계가 있다 = 패턴(추세 or 게절성)이 남아잇으므로 모델 성능 개선 필요
Q2. AIC와 BIC
- AIC, BIC 모두 낮은 값일수록 좋은 모델
- AIC
- 모델의 적합도(Likelihood)와 복잡성 사이의 균형을 고려
- 에측력에 이점이 있어 복잡한 모델에 적절함
- BIC
- 샘플에 로그를 취해 패널티를 부여
- AIC보다 복잡한 모델에 가혹한 패널티를 주는 만큼, 단순한 모델이 적합
- 설명 및 해석력에 이점
Q3. pmdarima - auto_arima
seaosonality를 반영하기 위한 파라미터
- 월별 데이터(Monthly Data) = 1년 주기의 계절성이 필요, m = 12
- 계절성이 있다 : seasonal = True
Q4. Prophet 라이브러리
- 데이터 결측치가 있더라고 전처리 없이 자동으로 처리
- 명절, 휴일 같은 사용자 정의 이벤트를 add_country_holiday 등을 통해 모델에 반영
- 비선형 추세를 반영하는데 한계가 있음
- 통계적 세부 조정(fine-tuning)이 어려움
- 비선형 추세 및 튜닝이 필요하면 ARIMA/SARIMA로 가라
- add_seasonality, condition_name 을 활용하여 특정 시전에만 적용되는 조건부 계절성 모델링이 가능함
Q5. Prophet의 Cross Validation 코드
![]() |
- df_cv= cross_validation() : 과거 데이터로 미래를 예측 - initial = '730 days' : 최초 학습에 사용할 훈련 데이터의 기간 - period = '180 days' : 교차 검증을 수행할 때 cutoff를 이동시키는 간격, 180일 마다 새로운 검증을 시작한다는 의미 - horizon = '365 days' : 각 cutoff 시점에서 미래를 예측할 기간 |
2. [라이브세션] API 구축
프로덕트 개발을 위한 절차를 이해하고 파이썬 스크립트간 모듈 import 개념을 이해하자.
(1) 최종 목표 선정
'작동하는 최소의 기능을 만족하는 프로덕트를 만들고 확대하는 방식으로 구현'
- 기능 정의
기능 번호 기능 주요 작업 필수/선택 1 데이터 수집 데이터 전처리 필수 2 모델 개발 예측 모델 학습, 저장, 평가 필수 3 API 서버 개발 FastAPI 서버 구축 필수 4 배포* 클라우드 혹은 회사 서버 내 배포 필수 5 자동화 데이터 파이프라인, 재학습 스케쥴링 선택 6 모니터링 로그 관리 선택 7 프론트엔드 UX/UI 개발, 시각화 선택 - 모델링: 데이터 수집, 생존 예측 모델 개발
- API 서버 개발; 전달 인자를 받을 API 서버 구현
- 컨테이너화 및 배포: 개발된 어플을 컨테이너화 후 배포
- 배포: 개발자가 만든 소프트웨어를 실제 사용자가 인터넷을 통해 사용 가능한 환경으로 ㅇ롬김
- 컨테이너화: 소프트웨어에서 필요한 요소(라이브러리, 코드) 등을 격리된 환경으로 포장하는 기술
- 데이터 파이프라인 구축: 실시간 혹은 배치 데이터 수집 및 자동화
(2) 파이썬 모듈과 가상환경 세팅
1) 파이썬 설치 경로 찾기
C:\Users\<사용자명>\AppData\Local\Programs\Python
※ import 실행 시 탐색하는 순서
- import pandas를 실행하면 스크립트 파일 찾는 순서는 다음의 우선순위를 가짐
- 현재 작업 디렉토리 - 같은 폴더 안에 있는가? 가 최우선
- python PATH 환경변수(시스템 설정)
- 표준 라이브러리 - 파이썬이 설치된 기본 기능 등의 폴더
- 서드파티 패키지 - pip 명령어로 설치한 기본 라이브러리들이 모이는 곳
|
import sys
from pprint import pprint
# 파이썬이 모듈을 찾는 경로 리스트 출력
pprint(sys.path)
|
['c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\python311.zip', 'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\Lib', 'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\DLLs', '', 'C:\\Users\\정우성\\AppData\\Roaming\\Python\\Python311\\site-packages', 'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311', 'c:\\Users\\정우성\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages'] |
(2)-1. 파이썬 모듈 실습
- 스크립트 파일: 코드를 담고 실행하는 가장 기본적인 파일
- import: 스크립트 파일이 서로를 불러서 사용하는 방법
|
def add(a, b):
return a + b
|
calculator.py 파일 생성 |
|
import calculator # 다른 스크립트 파일 불러오기
result = calculator.add(5, 3)
print(result) # 8 출력
|
불러온 calculator 파일로 계산 진행 |
(2)-2. 가상환경 세팅
- 버전 이슈에 따른 버그나 충돌을 방지하여 독립된 환경을 구축하는 것을 말함
- 가상환경
- Python 프로젝트를 위한 독립적인 실행 환경을 제공하는 도구
- 각 프로젝트마다 필요한 패키지와 의존성을 분리하여 관리
- 장점
- 의존성 충돌 방지: 서로 다른 버전의 라이브러가 필요한 프로젝트들을 독립적으로 관리함
- 프로젝트 이식성 향상: 필요한 패키지 목록을 공유(requirements.txt 파일)
- 시스템 환경 보호: 전역 python 환경을 오염시키지 않고 실험적인 패키지를 설치하고 테스트
- 주요 가상환경 도구
- venv: Python 3.3부터 기본으로 제공되는 가상환경 생성 도구
- virtualenv: Python 2와 3 모두 지원하는 더 많은 기능을 제공하는 도구
- conda: 데이터 과학 분야에서 많이 사용되는 패키지 관리 시스템
- uv: 최근에 부흥한 패키지 관리 도구이자, 가상환경 관리 시스템. 속도가 매우 빠름
- 가상환경 기본 명령어
| python -m venv myenv | 가상환경 생성 |
| myenv\Scripts\activate | 가상환경 활성화 |
| pip list | Package Version ---------- ------- pip 25.3 setuptools 65.5.0 이렇게 나와야 정상 |
| deactivate | 가상환경 해제 |
(3) API 개발과 배포
- API(Application Programming Interface)
- 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘
- 위를 이용해서 데이터를 수집해올 수 있음.
(3)-1. 웹 개발 모듈 FastAPI
|
from fastapi import FastAPI
# FastAPI 앱 생성
app = FastAPI()
# 루트 URL 접속 시 실행되는 함수 (GET 메서드)
@app.get("/")
def read_root():
return {"Hello": "FastAPI World!"}
|
uvicorn main:app --reload --host 0.0.0.0 --port 8080
실행은 이걸로 |
(3)-2. FastAPI 구동하기
|
순서
|
터미널/파이썬 입력 코드
|
결과 |
|
1
|
python -m venv helloworld
|
|
|
2
|
helloworld\Scripts\activate
|
왼쪽을 실행하면 이렇게 앞에 붙음 |
|
3
|
from fastapi import FastAPI
# FastAPI 앱 생성
app = FastAPI()
# 루트 URL 접속 시 실행되는 함수 (GET 메서드)
@app.get("/")
def read_root():
return {"Hello": "FastAPI World!"}
|
main.py 파일에 다음 내용 붙여넣기 |
|
4
|
pip install fastapi
|
fastapi 설치 |
|
5
|
pip install uvicorn | unicorn 설치 |
|
6
|
uvicorn main:app --reload --host 0.0.0.0 --port 8080
|
INFO: Will watch for changes in these directories: ['C:\\Users\\<사용자명>\\Desktop\\QAQC_3rd\\시계열'] INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit) INFO: Started reloader process [24496] using WatchFiles INFO: Started server process [27868] INFO: Waiting for application startup. INFO: Application startup complete. 이렇게 까지 떠야 성공! |
|
7
|
http://localhost:8080/
|
접속해서 확인하기 |
(4) 타이타닉 모델 만들기
'빅데이터 QAQC_3기 > 빅데이터 QAQC_3기 TIL' 카테고리의 다른 글
| TIL_251128 (0) | 2025.11.28 |
|---|---|
| TIL_251127 (0) | 2025.11.27 |
| TIL_251125 (0) | 2025.11.25 |
| TIL_251124 (0) | 2025.11.24 |
| TIL_251121 (1) | 2025.11.21 |

