한빛미디어 도서 <혼자 공부하는 머신러닝+딥러닝>의 전개를 따른 내용이다.
이번 포스팅은 '데이터 다루기'이다.
머신러닝에 사용할 데이터는 어떻게 준비해야 할까?
특히 '지도학습'을 시킬 경우에 train set과 test set이라는 두 가지를 준비해야 한다는 내용의 포스팅이다.
챕터2, 데이터 다루기 | train set과 test set
* 머신러닝 알고리즘에 주입할 데이터를 준비하는 방법을 배운다.
* 데이터 형태가 알고리즘에 미치는 영향을 이해한다.
# 지도학습
머신러닝 알고리즘은 크게 지도학습과 비지도학습으로 나뉜다. (강화학습이라는 것도 있지만 넘어간다. ) 이전에 공부한 '도미 or 빙어'를 맞추는 이진분류를 되새겨보자. 내가 실습했던 이진분류는 k-최근접이웃 알고리즘을 이용한 지도학습이다. 입력 데이터(도미와 빙어)와 정답(target data, 입력 데이터가 도미인지 빙어인지의 정답) 데이터가 있었다. 이 둘을 training data라고 한다. 이러한 지도학습에서는 정답(target) 데이터가 있으므로 이걸 기반으로 하여 학습 가능하다. 반면에 비지도학습은 target data를 사용하지 않는다! (지금은 일단 넘어간다)
다만, 이전에는 input 데이터로 학습시키고(정확히는 정답을 아예 알려준 셈), 모델의 성능 테스트 또한 input data로 진행했다. 그럼 당연히 다 맞추게 된다.
이제부터는 제대로! train/test data를 따로 설정하여 진행하겠다. 그래야 한다.
# 그럼 train set, test set을 만들어보자
train set은 훈련용 인풋 데이터와, 그 정답으로 이루어지고
test set은 테스트용 인풋 데이터와, 그 정답으로 이루어진다.
이러한 도미+빙어 데이터가 있다고 했을 때, 둘이 적절히 잘 섞인 set을 만들어야 한다.
다음과 같이 앞에서 뚝자르고 뒤에서 뚝자르면 샘플링 편향이 나타날 수 있다.
애초에 주어진 도미빙어 데이터가 잘 섞여진 게 아니었기 때문이다.
그럼 랜덤하게 섞으려면?
numpy 라이브러리의 random 모듈을 이용하자.
그 전에! numpy는 파이썬의 대표적인 배열 라이브러리다.
우리가 지금 가지고 있는 input_arr, target_arr은 일반적인 파이썬 list인데, 이것을 numpy 배열로 바꾸어 사용할 것이다.
numpy 배열로 바꾼 것에 ramdom을 적용할 예정.
이제 random 모듈을 적용해보자.
random.shuffle() 메서드를 통해서 우리가 만든 넘버 0~48을 랜덤하게 섞게 된다.
출력 결과를 보면 0~48 순서대로 만들었던 인덱스가 랜덤으로 섞인 것을 확인 가능하다.
이렇게 랜덤하게 섞인 index를 통해서, 어떤 배열 요소들을 랜덤하게 뽑아낼 수 있겠다.
그런데 랜덤하게 섞었는데도 우연히, 운 나쁘게 편향될 수도 있지 않을까?
우리는 인간이니까 시각적으로 확인해보자!
랜덤으로 잘 섞였다! 성공!
성공적으로 train set과 test set을 잘 만들었다.
그럼 이제 이 훈련셋, 테스트셋을 가지고 학습시키고 테스트해보자.
# 머신러닝!
아래와 같이..
train set으로 훈련시키고
test set으로 성능을 체크해보자.
predict() 메서드로 직접 test input을 예측해볼 수도 있다.
지난 시간에 배웠듯, score()의 내부적으로 predict()를 사용한다.
그렇게 예측한 정확도를 비율로 보여주는 것이 scroe()였다는 것을 기억.
# 핵심 정리
지도학습을 위해서는 train set과 test set이 필요하다.
train set으로 훈련시키기 위해서 사이킷런의 fit()을 사용했다.
test set으로 모델의 성능을 평가하기 위해서 사이킷런의 score()를 사용했다.
.
.
이전 포스팅:
2022.01.10 - [데이터분석과 머신러닝] - 머신러닝 입문 | 이진분류해보기 (k-Nearest Neighbors algorithm 사용)
다음 포스팅:
2022.01.12 - [데이터분석과 머신러닝] - 머신러닝 | 데이터 전처리 | 스케일 조정, 표준화하여 전처리 | 표준점수로 변환
'데이터분석과 머신러닝' 카테고리의 다른 글
혼공단7기 1주차 미션인증 (0) | 2022.01.13 |
---|---|
머신러닝 | 데이터 전처리 | 스케일 조정, 표준화하여 전처리 | 표준점수로 변환 (0) | 2022.01.12 |
머신러닝 입문 | 이진분류해보기 (k-Nearest Neighbors algorithm 사용) (0) | 2022.01.10 |
혼자 공부하는 머신러닝+딥러닝 | 도서 추천도 하고 내 얘기도 겸사겸사.. (0) | 2022.01.10 |
오예~! (0) | 2021.11.15 |