728x90
사용하기 앞서 모듈 임포트 해줍시다.
import numpy as np
1. rand()
np.random.rand()
>>> 0.6870391505824806
매개변수를 입력하지 않으면 [0, 1) 사이에서 랜덤한 하나의 숫자가 생성됩니다.
np.random.rand(10)
>>> array([0.65808258, 0.11701172, 0.79971791, 0.12323258, 0.69853063,
0.41614537, 0.51385073, 0.90329801, 0.88988373, 0.81785631])
한 자리 매개변수 10을 입력하면 [0, 1) 사이의 랜덤 값 10개가 리스트로 묶여 출력됩니다.
# 10행 1열의 랜덤 행렬 생성
np.random.rand(10, 1)
>>> array([[0.58994788],
[0.00643521],
[0.77251629],
[0.70248834],
[0.61525365],
[0.76042431],
[0.51292216],
[0.70408327],
[0.93517209],
[0.37580502]])
# 2X2 랜덤 행렬 생성
np.random.rand(2, 2)
>>> array([[0.70812183, 0.47568782],
[0.67439965, 0.76289334]])
# 3 X 3 X 3 랜덤 행렬 생성
np.random.rand(3, 3, 3)
>>> array([[[0.0454525 , 0.64660044, 0.22674118],
[0.67003254, 0.46833019, 0.77355274],
[0.12340082, 0.62632235, 0.27847073]],
[[0.852982 , 0.92838351, 0.99639829],
[0.7960074 , 0.75373407, 0.21550076],
[0.33600706, 0.46568254, 0.77338105]],
[[0.91496587, 0.1891391 , 0.92236748],
[0.69562465, 0.61077073, 0.19984127],
[0.05552503, 0.5684649 , 0.65151568]]])
2. randint() 함수
# 0과 1 사이의 랜덤한 수 10개 생성
np.random.randint(2, size=10)
>>> [0 0 0 0 0 0 0 1 0 1]
# 0~2 사이의 랜덤한 수 10개 생성
np.random.randint(3, size=10)
>>> [1 2 0 2 0 1 2 0 0 0]
머신러닝 모델 학습시 이진 분류를 위한 랜덤한 타겟변수(y) 생성을 위해 사용합니다.
# 랜덤 데이터 생성 (1000개의 샘플과 10개의 특징 변수)
np.random.seed(0)
X = np.random.rand(1000, 10)
y = np.random.randint(2, size=1000) # 이진 분류를 위해 0 또는 1로 랜덤하게 할당
X는 1000행 10열의 리스트 데이터, y는 0과 1로 이루어진 1000개의 리스트
모델 학습시 랜덤한 데이터를 만들기 위해 사용합니다.
3. random() 함수
rand() 함수와 비슷하나 원하는 차원의 형태를 튜플 자료형으로 넣어주어야 합니다.
np.random.random((3, 3, 3))
>>> array([[[0.21078145, 0.55645621, 0.8564934 ],
[0.83506595, 0.92735518, 0.36588581],
[0.31804957, 0.74942601, 0.43111241]],
[[0.08754866, 0.28280113, 0.41858229],
[0.29251643, 0.33220557, 0.29377591],
[0.04149917, 0.6370947 , 0.59729242]],
[[0.6533835 , 0.1923099 , 0.29565454],
[0.61961593, 0.59962757, 0.50633031],
[0.35041325, 0.912931 , 0.33977024]]])
바로 위 코드 처럼 3 X 3 X 3 랜덤 행렬이 생성되었습니다.
4. randn() 함수
평균 0, 표준편차 1을 가지는 표준 정규 분포 내에서 임의 추출하는 함수
np.random.randn(10)
>>> array([ 1.94266812, -0.48405702, -2.06069851, 0.5790077 , 1.38996407,
-0.30375978, -0.70503748, -0.43725941, 0.85020537, -0.45446094])
# 4 X 5 행렬 생성
np.random.randn(4, 5)
>>> array([[ 0.3287603 , 0.02780292, -0.07537961, 0.70129233, -0.4785799 ],
[-0.43058656, 0.79760285, -0.98692532, -0.88022019, -1.26031429],
[ 0.84901091, -0.10523697, -1.31361515, 0.85380856, -0.55554216],
[-0.87167808, -0.19567856, 1.47872361, -0.3949622 , 0.57533886]])
5. seed() 함수
np.random.seed()를 사용하면 난수를 예측가능하게 고정할 수 있습니다.
매개변수를 넣을 때 정수를 넣는데 어떤 수를 넣어도 상관없습니다. 예시를 보시면 이해하기 쉽습니다.
np.random.seed(0)
print(np.random.rand(3))
np.random.seed(2)
print(np.random.rand(3))
np.random.seed(0)
print(np.random.rand(3))
>>>
[0.5488135 0.71518937 0.60276338]
[0.4359949 0.02592623 0.54966248]
[0.5488135 0.71518937 0.60276338]
다른 매개변수 0과 2에 대해서는 서로 다른 값이 출력됩니다. 고정된 값을 계속 사용하고 싶을 경우 seed함수의 매개변수를 변경하시 않으면 됩니다.
728x90
'[머신러닝] > [Numpy, Pandas]' 카테고리의 다른 글
[Pandas] axis=0, axis=1에 관하여 (0) | 2023.11.27 |
---|---|
[Pandas] groupby 2.0 version 이후 (0) | 2023.10.25 |
[Pandas] 판다스 csv, sort_values(), by, ascending, 통계량 계산 (0) | 2023.06.21 |
[Pandas] CSV파일에 데이터 쓰기 (0) | 2023.06.21 |
[Pandas] 판다스 기초1 (0) | 2023.06.20 |