혼공단/혼공단 5기

혼자 공부하는 머신러닝 + 딥러닝 2장 - 데이터 다루기

하양훈 2021. 1. 29. 20:10
반응형

1. 훈련 세트와 테스트 세트

 

<지도 학습과 비지도 학습>

 

- 지도 학습 : 입력과 타깃을 전달하여 모델을 훈련한 다음 새로운 데이터를 예측하는데 활용

- 비지도 학습 : 타깃 데이터 없이, 입력 데이터에서 어떤 특징을 찾는데 주로 활용

 

<훈련 세트와 테스트 세트>

 

- 훈련 세트(train set) : 훈련에 사용되는 데이터,입력(데이터) + 타깃(정답)

- 테스트 세트(test set) : 평가에 사용하는 데이터

- 머신러닝의 정확한 평가를 위해서는 테스트 세트와 훈련세트가 따로 준비되어 있는게 좋다.

 

<샘플링 편향>

 

- 샘플링 편향 : 훈련세트와 테스트세트가 골고루 섞여있지 않아 샘플링이 한쪽으로만 치우친 상태

- 특정 종류의 샘플이 과도하게 많은 샘플링 편향을 가지고 있다면 제대로 된 지도 학습 모델을 만들 수 없다.

 

<샘플링 편향을 없애는 방법>

 

1) 넘파이 활용(다른 방법도 있으나 일단 2장에 소개된 방법으로 설명함)

import numpy as np

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

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

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

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

 

- index를 arange로 만들어서 shuffle하는 방식을 사용한다.

- 35개를 train set으로 15개를 test set으로 설정해 만들었다.

 

 

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()

 

- 실제 잘 섞였는지를 확인해보면 제대로 섞여있음을 확인할 수 있다. (파란색이 train, 주황색이 test)

 

 

2) 사이킷런 활용

from sklearn.,odel_selection import train_test_split

train_input,test_input,train_target,test_target = train_test_split(fish_data,fish_target,random_state=42)

 

- train_test_split() : 훈련 데이터를 훈련 세트와 테스트 세트로 나누는 함수, 여러개의 배열을 전달할 수 있다

- 테스트 세트로 나눌 비율은 test_size 매개변수로 지정할 수 있으며 기본값은 0.25(25%)이다.

- shuffle 메개변수로 훈련세트와 테스트 세트로 나누기 전에 무작위로 섞을지를 결정할 수 있으며 기본값은 True이다.

- stratify 매개변수에 클래스 테이블이 담긴 배열을 전달하면 클래스 비율에 맞게 훈련 세트와 테스트 데이터를 나눈다.(기본적으로 타깃데이터가 클래스 테이블이 된다)

 

 

2. 데이터 전처리

 

- 데이터 전처리 : 머신러닝 모델에 훈련 데이터를 주입하기 전에 가공하는 단계, 많은 시간이 소모되기도 한다.

 

- 각각의 특성의 값이 놓인 범위가 매우 다르다 = 특성의 스케일이 다르다.

- 특성의 스케일이 다르면 머신러닝 알고리즘을 예측하기 힘드므로, 특성을 일정한 기준으로 맞춰줘야 한다.

 

- 표준점수(z점수) : 훈련 세트의 스케일을 바꾸는 대표적인 방법 중 하나, 특성의 평균을 빼고 표준편차로 나눈 값.

※ 반드시 훈련세트의 평균과 표준편차로 테스트세트를 바꿔야 한다.

 

- 브로드캐스팅 : 크기가 다른 넘파이 배열에서 자동으로 사칙 연산을 모든 행이나 열로 확장하여 수행하는 기능

 

반응형