더북(TheBook)

5.5.2 층화

분류 문제에서 교차 검증을 사용하는 간단한 예입니다. 여기에서는 5-폴드 CV를 사용합니다.

 

In [17]:

iris = datasets.load_iris()
model = neighbors.KNeighborsClassifier(10)
skms.cross_val_score(model, iris.data, iris.target, cv=5)

Out [17]:

array([0.9667, 1. , 1. , 0.9333, 1. ])

위에서 언급했던 것처럼, 분류 모델에 사용하는 sklearn의 교차 검증은 층화 추출의 방식을 기본으로 사용합니다. 무슨 의미일까요? 층화 추출은 훈련-테스트 세트를 분리할 때 타깃 비율을 보존하는 것을 의미합니다. 예를 하나 들어 보겠습니다. 개와 고양이 클래스가 있는 작은 데이터셋에서 학습 샘플을 2-폴드 방식으로 추출해 보겠습니다.

 

In [18]:

# 층화 추출을 사용하지 않습니다
pet = np.array(['cat', 'dog', 'cat', 'dog', 'dog', 'dog'])
list_folds = list(skms.KFold(2).split(pet))
training_idxs = np.array(list_folds)[:, 0, :]

print(pet[training_idxs])
[['dog' 'dog' 'dog']
 ['cat' 'dog' 'cat']]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.