본문 바로가기
Study/[도서] 혼자 공부하는 머신러닝+딥러닝

[혼자 공부하는 머신러닝+딥러닝] 훈련세트&테스트세트

by CodeNook; 2024. 6. 19.
반응형

혼자 공부하는 머신러닝+딥러닝: 훈련 세트&테스트 세트

안녕하세요! 오늘은 머신러닝 모델을 훈련할 때, 훈련 세트와 테스트 세트로 데이터를 나누는 방법에 대해 알아보겠습니다. 이를 통해 모델의 성능을 제대로 평가할 수 있습니다.

1. 데이터 나누기

머신러닝 모델의 성능을 평가하려면 데이터를 훈련 세트와 테스트 세트로 나누어야 합니다. 훈련 세트는 모델을 학습하는 데 사용되고, 테스트 세트는 모델의 성능을 평가하는 데 사용됩니다.

2. 간단한 예제

도미와 빙어의 길이와 무게를 이용해 분류하는 문제를 예로 들어보겠습니다. 우리는 K-최근접 이웃 알고리즘(K-NN)을 사용해 이 문제를 해결했습니다. 먼저, 도미와 빙어 데이터를 준비하고 시각화했습니다. 그 다음, 훈련 데이터를 사용해 모델을 학습시키고, 테스트 데이터를 사용해 모델의 성능을 평가했습니다.

3. 올바른 평가 방법

훈련 데이터로 모델을 학습한 후, 같은 데이터로 평가하면 높은 정확도가 나올 수 있습니다. 이는 훈련 데이터에만 맞춰진 모델이기 때문에 일반화된 성능을 보장하지 않습니다. 따라서, 훈련 데이터와는 다른 테스트 데이터를 사용해 평가해야 합니다.

4. 데이터 섞기

데이터를 나눌 때 주의할 점은 데이터가 균일하게 섞여 있어야 한다는 것입니다. 예를 들어, 도미 데이터만 훈련 세트에 있고 빙어 데이터만 테스트 세트에 있다면 모델은 제대로 학습되지 않습니다. 이를 방지하기 위해 데이터를 무작위로 섞은 후 나누는 것이 중요합니다.

5. 넘파이(Numpy) 사용

파이썬의 넘파이 라이브러리를 사용하면 데이터를 쉽게 섞을 수 있습니다. 넘파이의 shuffle 함수를 이용해 데이터를 섞고, 섞인 데이터를 훈련 세트와 테스트 세트로 나눕니다. 이렇게 하면 모델이 각 클래스의 데이터를 고르게 학습할 수 있습니다.

import numpy as np

data = np.array([...])
labels = np.array([...])

indices = np.arange(data.shape[0])
np.random.shuffle(indices)

train_indices = indices[:35]
test_indices = indices[35:]

train_data = data[train_indices]
test_data = data[test_indices]

train_labels = labels[train_indices]
test_labels = labels[test_indices]

6. 훈련 및 평가

훈련 세트와 테스트 세트로 데이터를 나눈 후, 모델을 훈련시키고 평가합니다. K-NN 모델을 사용해 훈련하고, 정확도를 확인합니다.

from sklearn.neighbors import KNeighborsClassifier 

model = KNeighborsClassifier(n_neighbors=3) 
model.fit(train_data, train_labels) 
accuracy = model.score(test_data, test_labels) 
print(f'Accuracy: {accuracy}')

훈련 세트와 테스트 세트를 나누어 사용하는 방법을 배웠습니다. 이를 통해 모델의 성능을 더 정확하게 평가할 수 있습니다. 다음 시간에는 데이터 분할 시 발생할 수 있는 다른 문제에 대해 다루겠습니다. 감사합니다!

반응형