자료 출처 ➡️ PyTorch로 시작하는 딥러닝 입문
1. 지도 학습(Supervised Learning)
지도 학습은 입력 데이터(X)와 그에 상응하는 출력 데이터 또는 레이블(y) 간의 관계를 모델링하는 머신러닝 방법 중 하나.
훈련 데이터셋은 X와 y의 쌍으로 구성되어 있으며, 모델은 이 훈련 데이터를 이용하여 입력 데이터와 출력 데이터 간의 관계를 학습한다.
2. X와 y 분리하기
1) zip 함수를 이용하여 분리하기
X, y = zip(['a', 1], ['b', 2], ['c', 3])
print('X 데이터:', X)
print('y 데이터:', y)
2) 데이터프레임을 이용하여 분리하기
import pandas as pd
values = [['당신에게 드리는 마지막 혜택!', 1],
['내일 뵐 수 있을지 확인 부탁드...', 0],
['도연씨. 잘 지내시죠? 오랜만입...', 0],
['(광고) AI로 주가를 예측할 수 있다!', 1]]
columns = ['메일 본문', '스팸 메일 유무']
df = pd.DataFrame(values, columns=columns)
X = df['메일 본문']
y = df['스팸 메일 유무']
print('X 데이터:', X.to_list())
print('y 데이터:', y.to_list())
3) Numpy를 이용하여 분리하기
import numpy as np
np_array = np.arange(0, 16).reshape((4, 4))
X = np_array[:, :3]
y = np_array[:, 3]
print('X 데이터:')
print(X)
print('y 데이터:', y)
이렇게 X와 y를 분리하면, 지도 학습 모델을 학습시키고 평가하는 데 필요한 입력과 출력 데이터를 준비할 수 있다. X는 입력 데이터로, y는 출력 데이터 또는 레이블로 사용된다.
데이터 분리의 필요성
딥러닝 모델을 학습시키고 평가하기 위해서는 데이터를 적절하게 분리하는 작업이 필수적.
일반적으로, 데이터는 학습용 데이터와 테스트용 데이터로 나눈다.
학습용 데이터로 모델을 학습시키고, 테스트용 데이터로 학습된 모델의 성능을 평가한다.
데이터 분리 방법
1. 수동으로 분리하기
데이터를 수동으로 분리할 때는 주로 데이터의 일부를 학습용 데이터로, 나머지 일부를 테스트용 데이터로 사용한다. 이를 위해 데이터를 섞고 일정 비율로 나누는 과정이 필요하다.
import numpy as np
# 예시 데이터 생성
X, y = np.arange(0, 24).reshape((12, 2)), range(12)
# 데이터 분할 비율 설정
train_ratio = 0.8
num_of_train = int(len(X) * train_ratio)
num_of_test = len(X) - num_of_train
# 데이터 분할
X_train, X_test = X[:num_of_train], X[num_of_train:]
y_train, y_test = list(y)[:num_of_train], list(y)[num_of_train:]
# 결과 출력
print('훈련 데이터 X:', X_train)
print('테스트 데이터 X:', X_test)
print('훈련 데이터 y:', y_train)
print('테스트 데이터 y:', y_test)
2. 사이킷런의 train_test_split() 사용
사이킷런의 `train_test_split()` 함수를 사용하면 데이터를 간편하게 분리할 수 있다. 이 함수는 데이터를 무작위로 섞은 후 지정한 비율에 맞게 분할해준다.
from sklearn.model_selection import train_test_split
# 예시 데이터 생성
X, y = np.arange(0, 10).reshape((5, 2)), range(5)
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1234)
# 결과 출력
print('훈련 데이터 X:', X_train)
print('테스트 데이터 X:', X_test)
print('훈련 데이터 y:', y_train)
print('테스트 데이터 y:', y_test)
이렇게 데이터를 분리하면, 학습에 사용되는 데이터와 모델의 성능을 평가하는 데 사용되는 데이터를 분리할 수 있다. 데이터를 분리함으로써 모델의 일반화 성능을 더 정확하게 평가할 수 있다.
'딥러닝' 카테고리의 다른 글
U-Net과 Transformer 비교 + 관련 개념 정리 (0) | 2024.07.30 |
---|---|
Neural Networks - MLP (0) | 2024.07.28 |
딥러닝 Historical Review - 고려대학교 최성준 교수님 (0) | 2024.04.11 |
판다스(Pandas), 넘파이(Numpy), 맷플롭립(Matplotlib) 간단 비교 (0) | 2024.04.09 |
딥러닝 기본 용어 설명 - 고려대학교 최성준 교수님 (0) | 2024.04.08 |