728x90

머신러닝에서 많이 사용되는 표본추출에 대하여 설명하겠습니다.

우선 난수 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,]

+ Recent posts