반응형
🧾 CSV 파일도 DataLoader로 불러올 수 있어? 당연하지!
이전 포스트에서는 PyTorch의 DataLoader로 MNIST 이미지 데이터를 불러와봤어요.
그런데 실제 프로젝트나 대회에서 만나는 데이터는 대부분 .csv, .txt, 혹은 직접 만든 데이터셋이죠?
그래서 오늘은:
- CSV 파일 데이터를 불러오는 방법
- Dataset 클래스를 상속해서 커스터마이징하는 방법
- 그리고 실습 예제까지 깔끔하게 정리해드릴게요.
📦 목표: Titanic 생존자 예측 데이터를 DataLoader로 불러오자
Kaggle의 대표 입문용 데이터셋, Titanic 데이터를 사용하겠습니다.
✅ Step 1. CSV용 커스텀 Dataset 클래스 만들기
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
class TitanicDataset(Dataset):
def __init__(self, csv_path):
self.df = pd.read_csv(csv_path)
# 간단한 전처리: 필요한 열만 선택하고 결측치 제거
self.df = self.df[['Pclass', 'Sex', 'Age', 'Fare', 'Survived']].dropna()
# 범주형 변수 → 숫자형
self.df['Sex'] = self.df['Sex'].map({'male': 0, 'female': 1})
# 입력(x), 정답(y) 분리
self.X = self.df.drop('Survived', axis=1).values.astype('float32')
self.y = self.df['Survived'].values.astype('int64')
def __len__(self):
return len(self.df)
def __getitem__(self, idx):
return torch.tensor(self.X[idx]), torch.tensor(self.y[idx])
✅ Step 2. DataLoader로 사용하기
# 커스텀 Dataset 인스턴스 생성
dataset = TitanicDataset('train.csv')
# DataLoader로 래핑
dataloader = DataLoader(dataset, batch_size=16, shuffle=True)
# 한 배치 확인해보기
for x_batch, y_batch in dataloader:
print("🧮 Feature shape:", x_batch.shape)
print("🎯 Label shape:", y_batch.shape)
print("🎯 Label example:", y_batch[:5])
break
이제 우리가 만든 TitanicDataset은 PyTorch 학습 파이프라인에 완벽하게 들어맞는 구조입니다.
🔁 이렇게 활용할 수 있어요!
- 전처리 과정까지 Dataset 클래스에 통합하면 깨끗한 구조로 학습코드 유지 가능
- collate_fn, transform 등 확장성도 Good
- 텍스트, 이미지, 시계열, 그래프 등 모든 커스텀 데이터에 응용 가능!
💬 마무리 요약
- DataLoader는 이미지뿐만 아니라 CSV, 텍스트 등 모든 데이터 타입과 함께 사용 가능
- Dataset 클래스를 상속해서 정의하면 어떤 구조의 데이터도 불러올 수 있음
- 실전에서는 전처리 + 로딩을 Dataset에 묶어두는 방식이 효율적!
반응형
'컴퓨터 과학 > 인공지능' 카테고리의 다른 글
| 딥러닝 기본 파이프라인 예제 (pytorch) (1) | 2025.04.10 |
|---|---|
| PyTorch DataLoader: 실무에 가까운 고급 사용법과 예제 (0) | 2025.04.08 |
| PyTorch에서 DataLoader를 쓰는 이유는 뭘까? (0) | 2025.04.08 |
| 오차 측정 (Loss Measurement) (0) | 2025.04.08 |
| 파인튜닝의 대안: PEFT (Parameter-Efficient Fine-Tuning) (0) | 2025.04.08 |