데이터가 큰 경우 무작정 전체 데이터로 분석을 진행하는 것 보다 점진적으로 데이터 사이즈를 늘리는 것이 좋다. 샘플링 기법은 크게 확률에 기반한 통계적인 방법(Probability sampling)과 확률에 기반하지 않은 Non-probability 두 가지로 나눌 수 있다. 여기서는 접근이 용이하고 보편적으로 사용하는 probability sampling을 다룬다.
import random
population = 100
data = range(population)
from sklearn.model_selection import train_test_split
stratified_sample, _ = train_test_split(population, test_size=0.9, stratify=population[['label']])
import numpy as np
clusters=5
pop_size = 100
sample_clusters=2
cluster_ids = np.repeat([range(1,clusters+1)], pop_size/clusters)
cluster_to_select = random.sample(set(cluster_ids), sample_clusters)
indexes = [i for i, x in enumerate(cluster_ids) if x in cluster_to_select]
cluster_associated_elements = [el for idx, el in enumerate(range(1, 101)) if idx in indexes]
population = 100
step = 5
sample = [element for element in range(1, population, step)]
import numpy as np
clusters=5
pop_size = 100
sample_clusters=2
sample_size=5
cluster_ids = np.repeat([range(1,clusters+1)], pop_size/clusters)
cluster_to_select = random.sample(set(cluster_ids), sample_clusters)
indexes = [i for i, x in enumerate(cluster_ids) if x in cluster_to_select]
cluster_associated_elements = [el for idx, el in enumerate(range(1, 101)) if idx in indexes]
Non-probability 샘플링의 종류는 아래와 같다.