머신러닝/혼공머신

혼공머신 | Chap 02-1. 훈련 세트와 테스트 세트

하카데미 2022. 8. 11. 18:30

 

머신러닝 구분

 

 

특성 (Feature)

생선 데이터의 길이와 무게

chap 01-3에서 생선 맞추기에 사용한 k-최근접 이웃 알고리즘은 지도 학습 알고리즘!

 

테스트 세트 (Test set)

평가에 사용하는 데이터

 

훈련 세트 (Train set)

훈련에 사용되는 데이터

모델을 평가하려면, 훈련할 때 사용하지 않은 데이터로 평가 해야함.

 

생선 데이터 49개에서 14개를 테스트 세트로 하기

(훈련 데이터의 10~20%를 테스트 세트로 한다. 단 전체 데이터가 아주 많을 땐, 1%도 괜춘)

이때, 훈련 데이터와 테스트 데이터에는 클래스가 골고루 섞여 있어야 한다.

샘플링 편향(Sampling bias) 조심!

 

import numpy as np

input_arr = np.array(fish_data)    # 리스트를 배열로 만들어줌
target_arr = np.array(fish_target)

배열은 크기를 갖는다.

shape으로 확인 가능.

input_arr.shape    # (샘플 수, 특성 수)를 알 수 있음.

 

np.random.seed()

일정한 결과를 얻으려면 초기에 랜덤 시드를 지정

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

np.random.shuffle(index)    # 49개 인덱스 배열을 무작위로 섞음.

 

배열 인덱싱(array indexing)

여러 개의 인덱스로 한 번에 여러 개의 원소를 선택

input_arr[[1, 3]]    # input_arr에서 2번째와 4번째 샘플을 출력해줌.

 

데이터 세트 나누기

# 훈련 데이터 셋
train_input = input_arr[index[:35]]
train_target = target_arr[index[:35]]

# 테스트 데이터 셋
test_input = input_arr[index[35:]]
test_target = target_arr[index[35:]]

 

훈련 세트와 테스트 세트에 생선들이 잘 섞여 있는지 확인!

import matplotlib.pyplot as plt

plt.scatter(train_input[:, 0], train_input[:,1])
plt.scatter(test_input[:,0], test_input[:,1])
plt.xlabel(‘length’)
plt.ylabel(‘weight’)
plt.show()

훈련 세트와 테스트 세트 확인

 

2번째 머신러닝 프로그램

kn = kn.fit(train_input, train_target)    # 01-3 참고
kn.score(test_input, test_target)
kn.predict(test_input)    # test_target과 비교해보기!(일치함)

 

np.arange()

매개변수가 1: 종료 숫자를 의미

매개변수가 2: 시작 숫자, 종료 숫자를 의미

매개변수가 3: 마지막 매개변수는 간격을 의미