일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- java
- 넘파이 배열
- numpy 기초
- 차원축소
- 데이터 마이닝
- cpp
- OOP
- 코테
- 머신러닝
- ack
- cpp class
- lambda
- 자바
- 디자인 패턴
- 코딩테스트실력진단
- 코드트리
- 기계학습
- NumPy
- python
- 넘파이 기초
- 합성곱 신경망
- 클러스터링
- 데이터 분석
- 코딩테스트
- c++
- 네트워크 기초
- 넘파이
- Design Pattern
- Machine Learning
- Today
- Total
준비하는 대학생
[NumPy] random 난수 생성 본문
1. 난수 생성의 기본: random.rand()와 random.randn()
NumPy의 random 모듈에서 가장 기본적인 난수 생성 함수는 random.rand()와 random.randn()입니다.
1.1. random.rand()
random.rand() 함수는 0과 1 사이의 균일 분포(uniform distribution)를 따르는 난수를 생성합니다. 인자로는 원하는 배열의 크기를 지정합니다.
예시
import numpy as np
# 0과 1 사이의 난수 생성
rand_num = np.random.rand(3, 3)
print(rand_num)
결과
[[0.42656567, 0.707024 , 0.93653248],
[0.1935818 , 0.56052649, 0.59793347],
[0.83235891, 0.84720889, 0.17890702]]
1.2. random.randn()
random.randn() 함수는 평균이 0이고 표준편차가 1인 정규 분포(가우시안 분포)를 따르는 난수를 생성합니다. 인자로는 원하는 배열의 크기를 지정합니다.
예시
import numpy as np
# 정규 분포를 따르는 난수 생성
rand_num = np.random.randn(3, 3)
print(rand_num)
결과
[[-0.28054502, 1.13074535, 0.7533984 ],
[ 0.31915416, -0.1691869 , -1.37088648],
[ 0.74561863, -1.59523572, -0.44216441]]
2. 정수 난수 생성: random.randint()
random.randint() 함수는 주어진 범위 안의 정수를 무작위로 생성합니다. 인자로는 난수의 최솟값, 최댓값 및 원하는 배열의 크기를 지정합니다.
예시
import numpy as np
# 1부터 10 사이의 정수 난수 생성
rand_int = np.random.randint(1, 10, size=(3, 3))
print(rand_int)
결과
[[4, 3, 8],
[6,1, 2],
[9, 7, 5]]
3. 다양한 확률 분포에 따른 난수 생성
NumPy의 random 모듈은 다양한 확률 분포에 따른 난수를 생성할 수 있는 함수를 제공합니다.
3.1. 이항 분포: random.binomial()
random.binomial() 함수는 이항 분포를 따르는 난수를 생성합니다. 인자로는 시행 횟수 n, 성공 확률 p 및 샘플 크기를 지정합니다.
예시
import numpy as np
# 이항 분포를 따르는 난수 생성
binomial_num = np.random.binomial(n=10, p=0.5, size=5)
print(binomial_num)
결과
[4, 6, 7, 5, 3]
3.2. 포아송 분포: random.poisson()
random.poisson() 함수는 포아송 분포를 따르는 난수를 생성합니다. 인자로는 평균 발생 횟수 lam 및 샘플 크기를 지정합니다.
예시
import numpy as np
# 포아송 분포를 따르는 난수 생성
poisson_num = np.random.poisson(lam=5, size=5)
print(poisson_num)
결과
[5, 6, 5, 7, 3]
4. 난수의 시드 설정: random.seed()
난수 생성은 컴퓨터의 시간에 기반하여 결정되기 때문에 실행할 때마다 결과가 달라집니다. 그러나 때때로, 같은 난수를 여러 번 생성하고 싶을 때가 있습니다. 이때 random.seed() 함수를 사용하여 난수 생성기의 시드 값을 고정할 수 있습니다.
예시
import numpy as np
# 시드 설정
np.random.seed(42)
# 난수 생성
rand_num = np.random.rand(3)
print(rand_num)
# 다시 시드 설정
np.random.seed(42)
# 동일한 난수 생성
rand_num2 = np.random.rand(3)
print(rand_num2)
결과
[0.37454012, 0.95071431, 0.73199394]
[0.37454012, 0.95071431, 0.73199394]
5. 결과
이 글을 통해 NumPy의 random 모듈을 활용하여 다양한 종류의 난수를 생성하는 방법에 대해 알아보았습니다. 난수 생성은 데이터 과학과 머신 러닝에서 빈번하게 사용되는 기능이므로, 이를 잘 활용하면 효율적인 데이터 처리와 분석을 수행할 수 있습니다.
'Programming > Machine learning' 카테고리의 다른 글
[기계학습] 군집분석 - 비계층적 클러스터링(k-means) (0) | 2023.03.17 |
---|---|
[기계학습] 군집분석 - 계층적 클러스터링 (0) | 2023.03.17 |
[NumPy] 확장 슬라이싱 (0) | 2023.03.15 |
[NumPy] sort 정렬 (0) | 2023.03.15 |
[NumPy] unique 함수 (0) | 2023.03.14 |