이번 장은 데이터 세트를 훈련용과 테스트용으로 나누는 것(train_test_split)과 데이터 전처리에 대해 다룬다.
훈련 세트와 테스트 세트
- 1장 과정의 문제점 : 모든 데이터를 저장하고 그 중 데이터를 맞추는 건데 이상하지 않니? → 훈련 세트와 테스트 세트
- ML 알고리즘의 분류
- 지도(Supervised)학습 : 데이터와 정답이 주어지는 경우
- 비지도(Unsupervised)학습 : 데이터만 있을 때, 데이터를 파악하거나 변형하는 데 도움을 줌.
- 강화학습 : 행동과 보상 매커니즘
- 훈련 데이터 : 입력(피쳐의 집합)과 타깃(정답)
- 넘파이 numpy
- 파이썬 배열 라이브러리
- 내장 리스트 보다 좋고 빠르고 편함..
데이터 전처리
- numpy column_stack 함수, 리스트를 nparray로 세워줌.. 행 → 열
- 훈련 세트, 테스트 세트 나누기는 sklearn의 train_test_split 함수로 편하게 하자.
- 무작위로 데이터를 나눌 때 .. 가급적이면 전체 집합의 비율과 비슷하게 나오도록.. stratify 인자, 비율 기준으로 삼을 array
- kn.kneighbors 메서드 : 이웃 반환
- 스케일
- 스케일 맞추기 – 표준점수(z 점수)를 사용하는 방법 : 평균에서 표준편차의 몇 배만큼 떨어져 있는지..
mean = np.mean(train_input, axis=0) std = np.std(train_input, axis=0) train_scaled = (train_input - mean) / std # Standard score
- 대부분의 ML 알고리즘은 특성의 스케일이 다르면 제대로 작동 안함.
- 표준점수 말고 다른 표준화 방법도 있당
예제
- 데이터 준비
- 학습 시키기, 훈련 세트와 테스트 세트를 잘못 나누면 샘플링 편향이 생긴다.
- 스케일이 서로 다른 두 특성(length, weight)을 표준화 함.
- 스케일을 맞춘 데이터
- 스케일 맞추기
- kNN은 distances로 어떤 값들이 이웃으로 선택됐는지 확인할 수 있다.
- 분류 문제에서는 훈련 세트가 전체 세트의 비율과 유사한지 확인해야 한다.
- 사이킷런에는 훈련 세트와 테스트 세트를 나눌 수 있는 train_test_split 함수를 제공
- numpy로 데이터 만들기
- 샘플링의 편향을 없애고 다시 훈련
- numpy 데이터로 훈련
- numpy로 데이터 처리