ML

ML/ 훈련 세트와 테스트 세트 분리

새우는 맛있새우 2026. 1. 13. 16:36

훈련세트는 훈련할 때, 테스트 세트는 훈련세트를 테스트할 때 사용해야 한다. 

앞서 만든 fish_data 배열은 중첩배열이다.

print(fish_data[4])

를 출력하면 다섯번째 샘플인 [29.0, 430.0] 이 나오게 된다.

 

샘플링 편향을 방지하기 위해 훈련 데이터와 테스트 데이터에는 샘플들이 골고루 섞여 있어야 한다.

 

이를 위해 numpy 라이브러리가 도입된다.

import numpy as np

input_arr = np.array(fish_data)
target_arr = np.array(fish_target)

넘파이는 배열의 차원을 구분하기 쉽도록 행과 열을 가지런히 출력해준다.

 

shape 속성으로 넘파이의 샘플, 특성 수를 쉽게 알 수 있다.

print(input_arr.shape)

(49,2)가 출력된다. 49개의 샘플이 2개의 특성을 가지고 있다 즉, 49행 2열.

 

자 그럼 이제 샘플들을 골고루 섞기 위해서 인덱스를 섞겠다.

 

넘파이의 arange() 함수는 기본적으로 0부터 범위-1까지 1씩 증가하는 배열을 만들어준다.

random 패키지 아래에 있는 shuffle() 함수는 주어진 배열을 무작위로 섞어준다.

np.random.seed(42)
index = np.arange(49)
np.random.shuffle(index)

 

train_input 과 train_target을 35개씩 세트로 만들어주겠다.

train_input = input_arr[index[:35]]
train_target = target_arr[index[:35]]

 

나머지 14개는 테스트 세트로 만들어주겠다.

test_input = input_arr[index[35:]]
test_target = target_arr[index[35:]]

 

이제 이것들을 가지고 다시 훈련시키면 문제 없이 모델이 돌아간다.

이제 다음은 스케일이 다를 때의 특성 처리에 대해서 알아보겠다.

'ML' 카테고리의 다른 글

ML/ 데이터 전처리 방법  (0) 2026.01.13
ML/k-최근접 이웃 알고리즘  (0) 2026.01.13