단순 임의 추출로 하면 데이터를 학습시킬 때 한쪽으로만 치우쳐 학습될 수 있음.
따라서 데이터를 균등하게 학습시키기 위해 층화 표본 추출 사용
층화 표본 추출
군집별로 지정한 비율 만큼의 데이터를 임의 추출
의료 통계에서 코호트 분석할 때 사용
계통 추출
첫 표본은 무작위 추출. 표집 간격 k만큼 떨어진 곳 데이터 추출
특정 데이터가 주기성을 가지면, 데이터를 추출할 때 편향된 표본을 뽑을 수 있어 자주 사용x
군집 추출
소수의 군집으로 분할. 일정 수의 소집단을 임의 표본 추출
Pandas 메서드
pandas - sample()
- 단순임의 추출 수행
- n은 표본 개수, frac은 비율, random_state는 표본 추출 결과를 고정
- groupby() 추가하면 층화 표본추출 가능
sklearn(사이킷런) - train_test_split()
- 입력 데이터프레임/배열을 train, test로 나누는 함수
- tain_size 또는 test_size에 개수/비율을 입력해 표본 개수 조절
- random_state는 표본 추출 결과를 고정
import pandas as pd
from sklearn.model_selection import train_test_split
df=pd.read_csv("bike.csv")
df.head(2)
df.sample(n=2, random_state=34) # random_state 표본 추출 결과 고정
df["season"].unique() # array([1, 2, 3, 4], dtype=int64)
print(len(df["season"].unique())) # 4
print(df["season"].nunique()) # 4. number of unique
df.groupby("season").sample(n=2,random_state=34) # 층화 표본 추출. 계절마다 2개씩 표본추출
df.sample(frac=0.005,random_state=34)
len(df.sample(frac=0.005,random_state=34)) # 54. 표본추출 행 개수
df.sample(frac=0.005,random_state=34).shape # (54, 12). 54개 행, 12개 열
df_train, df_test=train_test_split(df,train_size=0.7,random_state=123)
df_train.head(2)
len(df_test)
df.sample(frac=0.0123).shape[0]
df.groupby("season").sample(frac=0.05).shape[0]
df_train,df_test=train_test_split(df,train_size=0.8,random_state=123)
df_test["temp"].max() # 테스트데이터에서 최고 기온
'Data > Python' 카테고리의 다른 글
[Data/Python] 상관분석 (0) | 2024.01.24 |
---|---|
[Data/Python] 이론 정리 (1) | 2024.01.24 |
[Data/Python]실습_데이터 전처리: 결측치 이상치 (0) | 2024.01.17 |
[Data/Python]실습_EDA: 수치형, 범주형 기술통계 (0) | 2024.01.17 |
[Data/Python]실습_기본문법 (0) | 2024.01.17 |