훈련세트는 훈련할 때, 테스트 세트는 훈련세트를 테스트할 때 사용해야 한다.
앞서 만든 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 |