머신러닝에서 많이 사용되는 표본추출에 대하여 설명하겠습니다.
우선 난수 10개를 구하는 프로그램 부터 시작합니다.
[R]
> sample(10) # 샘플 10개
#[1] 2 9 1 7 8 3 10 6 5 4
sample(10)은 10개의 난수를 발생하는데 매번 그 결과가 달라집니다.
그리하여 set.seed() 함수를 사용하여 초기치(시드)를 할당하면 매번 같은 결과를 만들 수 있습니다.
> sample(10) # 샘플 10개
# [1] 6 10 7 2 3 4 1 8 5 9
10개의 숫자를 이용하여 샘플 3개를 구하는 프로그램입니다.
> sample(10,3) # 샘플 3개
# [1] 5 2 1
> set.seed(123)
> sample(10,3) # 샘플 3개
# [1] 3 10 2
10개의 숫자를 이용하여 10개의 난수를 만드는데 복원 허용합니다. 그리하여 동일한 숫자가 나올 수도 있습니다.
> sample(10,replace=TRUE) # 복원 허용
# [1] 2 6 5 4 6 9 10 5 3 9
> sample(20,3,replace=TRUE) # 숫자 20으로 3개 만들기
# [1] 9 3 8
정규분포를 따르는 난수 100개를 만드는 프로그램입니다.
> set.seed(123)
> x <- rnorm(50); x # 난수 발생
[1] -0.56047565 -0.23017749 1.55870831 0.07050839 0.12928774
[6] 1.71506499 0.46091621 -1.26506123 -0.68685285 -0.44566197
[11] 1.22408180 0.35981383 0.40077145 0.11068272 -0.55584113
[16] 1.78691314 0.49785048 -1.96661716 0.70135590 -0.47279141
[21] -1.06782371 -0.21797491 -1.02600445 -0.72889123 -0.62503927
[26] -1.68669331 0.83778704 0.15337312 -1.13813694 1.25381492
[31] 0.42646422 -0.29507148 0.89512566 0.87813349 0.82158108
[36] 0.68864025 0.55391765 -0.06191171 -0.30596266 -0.38047100
[41] -0.69470698 -0.20791728 -1.26539635 2.16895597 1.20796200
[46] -1.12310858 -0.40288484 -0.46665535 0.77996512 -0.08336907
만들어진 난수 중에서 양수(0보다 큰)를 구하는 프로그램입니다.
> x[x >0]
[1] 1.55870831 0.07050839 0.12928774 1.71506499 0.46091621 1.22408180
[7] 0.35981383 0.40077145 0.11068272 1.78691314 0.49785048 0.70135590
[13] 0.83778704 0.15337312 1.25381492 0.42646422 0.89512566 0.87813349
[19] 0.82158108 0.68864025 0.55391765 2.16895597 1.20796200 0.77996512
# iris 데이터 샘플링 - train 데이터와 test 데이터 추출하기
set.seed(1234) # 난수 발생을 동일하게
index <- sample(2,nrow(iris),replace = TRUE) # 난수 1,2 를 만드는데 iris 관측치(150)만큼,
train_iris <- iris[index==1,] # 난수(index)가 1인 경우, iris 데이터 추출하여 train 데이터 만듬
test_iris <- iris[index==2,] # 난수(index)가 2인 경우, iris 데이터 추출하여 test 데이터 만듬
# train 데이터와 test 데이터를 7:3 으로 추출
index <- sample(2,nrow(iris),replace = TRUE,prob=c(0.7,0.3)) # prob 옵션을 이용하여 비율 지정
table(index) # index 의 분포를 확인하기 위함
train_iris <- iris[index==1,]
test_iris <- iris[index==2,]
'R & SAS 300제' 카테고리의 다른 글
t검정-두 그룹간의 평균치 차이 검정 - SAS, R, Python (0) | 2021.11.18 |
---|---|
행과 열의 합계 구하기 - apply계열(sapply, lapply, tapply), aggregate (0) | 2021.11.17 |
데이터를 정렬하기 - SAS, R - sort, order, decreasing (0) | 2021.11.16 |
미싱(Missing) 처리하기 - is.na( ), sum(is.na( )), na.rm, na.omit (0) | 2021.11.16 |
변수를 Keep 또는 Drop하기 - SAS, R (0) | 2021.11.16 |