Data Science/실습

DS 실습5- 표본 추출(sample, random_state, train_test_split)

에너지_2 2024. 11. 23. 12:14
728x90
반응형

 
(확률적) 표본 추출의 종류
[단순 임의 추출]
-  Simple Random Sampling
- 별도의 규칙이 존재하지 않은 보통의 임의 추출
 

ex) 여 50, 남 50 -> 20 추출-> 남 20 만 뽑을 수도 있음
단순임의추출은 편향적이라, 이를 보완한 방법이 층화표본추출

 
[층화 표본 추출]
- Stratified  Random Sampling
- 군집별로 지정한 비율만큼의 데이터를 임의추출
 
[계통 추출]
- Systematic Sampling
- 첫 표본을 무작위로 추출하고 표집 간격 k 만큼 떨어진 곳의 데이터 추출
 
[군집 추출]
- Cluster Sampling
- 소수의 군집으로 분할하고 일정의 소집단을 임의 표본 추출

ex) 5개 조 중에 2조만 뽑아서 발표시킬 거야

 


Pandas - sample(n, frac, random_state)

- 단순임의 추출을 수행하는 메서드
-  n: 표본 개수, frac: 비율, random_state: 표본 추출 결과를 고정(seed, 샘플링의 재현성을 보장)
- groupby()를 추가하면 층화표본추출가능 (1.0 버전부터 가능)

 
- Numpy 버전에 따라 결과 다를 수 있음
- 호출:  import pandas as pd

 
- pandas.nunique() 함수 사용

 
- groupby()를 추가하면 층화표본추출 가능

   위에서 sample()만 썼을 때 모두 동일한 'season' 값만 나올 수도 있는데 (단순임의추출)
   groupby()를 추가하여 모든 데이터의 n 개씩 추출할 수 있음 (층화표본추출)

메서드 체이닝: 함수.함수 연결하여 사용

- frac: 비율
- len / shape [0] : row 개수 동일 결과 반환

 

scikit-learn(사이킷런) - train_test_split 함수

- 입력 데이터프레임이나 배열을 학습용(train) 데이터와 테스트용(test) 데이터로 나누는 함수 
- tran_size or test_size에 개수 or 비율을 입력하여 표본 개수 조절
- random_state : 표본 추출 결과 고정

 
설치: pip install scikit-learn
호출: from sklearn.model_selection import train_test_split
( 데이터 분석 툴을 제공하는 scikit-learn 패키지 중 model_selection에는 데이터 분할을 위한 train_test_split 함수가 있음)

Returns
-------
splitting : list, length=2 * len(arrays)
    List containing train-test split of inputs.

 
- train_size, test_size 둘 중 하나만 명시해 주면 len 결과는 동일

 
 

728x90
반응형