RNN 시계열예측 - 공유
RNN 시계열예측 - 공유에서 직접 따라간 구현 흐름과 코드 증거를 다시 볼 수 있게 정리한 DL 학습 기록입니다. 본문은 데이터셋 소개, 시계열 데이터 준비하기 순서로 핵심 장면을 먼저 훑고, import torch, 데이터 불러오기, 시각화 같은 코드로 실제 구현을 이어서 확인할 수 있습니다. md 원본과 18개 코드 블록, 16개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 torch, pandas, matplotlib, numpy입니다.
빠르게 볼 수 있는 포인트: 데이터셋 소개, 시계열 데이터 준비하기.
남겨둔 자료: md 원본과 18개 코드 블록, 16개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 torch, pandas, matplotlib, numpy입니다.
주요 스택: torch, pandas, matplotlib, numpy, sklearn
Snapshot
| Item | Value |
|---|---|
| Track | DL |
| Type | Shared Note |
| Source Files | md |
| Code Blocks | 18 |
| Execution Cells | 16 |
| Libraries | torch, pandas, matplotlib, numpy, sklearn |
| Source Note | 4-5_RNN_시계열예측 - 공유 |
What This Note Covers
데이터셋 소개
데이터셋 정보 - 예나 날씨 데이터 - 2009년부터 2016년까지 독일 예나 도시의 날씨 데이터를 10분 간격으로 기록. - 14개 칼럼: 기온(°C), 기압(hPa), 습도(%), 바람 속도 등 다양한 정보 포함. 예측 목표 - 주어진 길이의 기온 시퀀스 데이터를 활용해 다음 시간의 기온을 예측.
- 읽을 포인트: 세부 흐름: 데이터 불러오기, 시각화
데이터 불러오기
칼럼 설명 - Date Time: 기록된 시간 - T (degC): 섭씨 온도 - 기타 12개의 기상 요소 포함. 총 데이터 개수: 약 42만 개 - 총 칼럼 수: 15개
시각화
계절성 패턴이 뚜렷하게 나타남: - 여름: 기온 상승. - 겨울: 기온 하강. - 변동성: 짧은 시간 간격에서도 기온 변동이 관측됨.
시계열 데이터 준비하기
데이터 처리 같은 코드를 직접 따라가며 시계열 데이터 준비하기 흐름을 확인했습니다.
- 읽을 포인트: 세부 흐름: 데이터 처리
데이터 처리
데이터프레임에서 기온 데이터를 numpy array 형식으로 변환 기온 정보 하나만 가져오는 거지만, 데이터 자체는 2차원으로 유지(대괄호를 두 개씩)
Why This Matters
데이터 파이프라인
- 왜 필요한가: 모델 성능 이전에 입력이 일정한 형식으로 잘 들어가야 학습과 평가가 안정적으로 반복됩니다.
- 왜 이 방식을 쓰는가: Dataset/DataLoader 구조는 데이터 읽기, 변환, 배치 처리를 분리해 코드 재사용성과 실험 반복성을 높여줍니다.
- 원리: 각 샘플을 Dataset이 제공하고, DataLoader가 이를 배치로 묶어 셔플·병렬 로딩·collate를 담당합니다.
전처리와 입력 정리
- 왜 필요한가: 원본 데이터는 결측치, 스케일 차이, 불필요한 기호처럼 학습을 방해하는 요소가 많아 바로 넣기 어렵습니다.
- 왜 이 방식을 쓰는가: 전처리는 모델 종류와 데이터 특성에 맞는 입력 형식을 먼저 맞춰주기 때문에, 단순해 보여도 성능 차이를 크게 만듭니다.
- 원리: 불필요한 정보를 줄이고 유효한 패턴을 남기도록 데이터를 정규화·정제·인코딩해 모델이 학습하기 쉬운 분포로 바꿉니다.
Implementation Flow
- 데이터셋 소개: 데이터 불러오기, 시각화
- 시계열 데이터 준비하기: 데이터 처리
Code Highlights
import torch
import torch는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 원본 노트에서 구현 흐름을 가장 잘 보여주는 핵심 코드 중 하나입니다.
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
from torch.utils.data import Dataset, DataLoader
데이터 불러오기
데이터 불러오기는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 원본 노트에서 구현 흐름을 가장 잘 보여주는 핵심 코드 중 하나입니다.
!wget https://storage.googleapis.com/tensorflow/tf-keras-datasets/jena_climate_2009_2016.csv.zip
!unzip jena_climate_2009_2016.csv.zip
시각화
시각화는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 원본 노트에서 구현 흐름을 가장 잘 보여주는 핵심 코드 중 하나입니다.
import matplotlib.pyplot as plt
temperatures = df['T (degC)']
temperatures.index = df['Date Time'] # 시간을 인덱스로 설정
plt.figure(figsize=(10, 5)) # 그래프 크기 조정
temperatures.plot()
plt.xticks(rotation=20) # x축 눈금 회전 (예: 45도)
plt.xlabel("Date Time") # x축 라벨 추가
plt.ylabel("Temperature (°C)") # y축 라벨 추가
plt.title("Temperature Over Time") # 제목 추가
plt.show()
데이터 처리
데이터 처리는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 Train loop 흐름이 주석과 함께 드러납니다.
# @title Train loop
epochs = 5
step = 0
for epoch in range(epochs):
model.train()
for train_batch in train_dataloader:
inputs = train_batch[0].to(device)
targets = train_batch[1].to(device)
preds = model(inputs)
loss = loss_fn(preds, targets)
loss.backward()
optimizer.step()
optimizer.zero_grad()
step += 1
if step % 100 == 0:
print(f'step {step}, train loss: {loss.item():.4f}')
model.eval()
with torch.no_grad():
losses = []
for val_batch in val_dataloader:
inputs = val_batch[0].to(device)
targets = val_batch[1].to(device)
preds = model(inputs)
loss = loss_fn(preds, targets)
# ... trimmed ...
Source Bundle
- Source path:
12_Deep_Learning/Code_Snippets/4-5_RNN_시계열예측 - 공유.md - Source formats:
md - Companion files:
4-5_RNN_시계열예측 - 공유.md - Note type:
code-note - Last updated in the source vault:
2026-03-08T03:33:14 - Related notes:
T (degC),12_Deep_Learning_Code_Summary.md - External references:
www.kaggle.com,localhost,storage.googleapis.com
Note Preview
-
- 데이터셋 정보 - 예나 날씨 데이터 - 2009년부터 2016년까지 독일 예나 도시의 날씨 데이터를 10분 간격으로 기록. - 14개 칼럼: 기온(°C), 기압(hPa), 습도(%), 바람 속도 등 다양한 정보 포함.