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

  1. 데이터셋 소개: 데이터 불러오기, 시각화
  2. 시계열 데이터 준비하기: 데이터 처리

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), 습도(%), 바람 속도 등 다양한 정보 포함.