
.png)
계층적 샘플링 : 전체 인구는 계층이라는 동질의 그룹으로 나뉘고, 테스트 세트가 전체 인구를 대표하도록 각 계층에서 올바른 수의 샘플을 추출하는 것.
전문가가 중간 소득이 중간 주택 가격을 예측하는 데 매우 중요하다고 했다고 가정했을 떄, 중간 소득이 연속적인 숫자형 특성이므로 소득에 대한 카테고리 특성을 만들어야 한다.
카테고리 5개를 가진 소득 카테고리 특성을 만든다.
소득 카테고리를 기반으로 계층 샘플링
StratifiedShuffleSplit : StratifiedKFold의 계층 샘플링과 ShuffleSplit의 랜덤 샘플링을 합친 것으로 test_size 와 train_size 매개 변수의 합을 1 이하로 지정할 수 있다.
housing["income_cat"] = pd.cut(housing["median_income"],
bins=[0., 1.5, 3.0, 4.5, 6., np.inf],
labels=[1, 2, 3, 4, 5])
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
for train_index, test_index in split.split(housing, housing["income_cat"]):
strat_train_set = housing.loc[train_index]
strat_test_set = housing.loc[test_index]