hgk0404.tistory
Code After Work
hgk0404.tistory

공지사항

전체 방문자
오늘
어제
  • 전체 카테고리
    • [컴퓨터비전]
    • [Computer Science]
      • [컴퓨터네트워크]
      • [알고리즘]
      • [자료구조 in C]
      • [C & C++]
      • [이산수학]
      • [Math]
    • [머신러닝]
      • [Numpy, Pandas]
    • [Cloud]
      • [AWS]
      • [NCP]
      • [Kubernetes]
      • [Terraform]
    • [Dev]
      • [가상환경]
      • [Linux]
      • [Docker]
    • [Python]
    • [Coding Test]
      • [백준]
      • [프로그래머스]
      • [SQL]
    • [WEB]
    • [일상]
    • [엑셀]
    • [금융]

인기 글

최근 글

최근 댓글

250x250
hELLO · Designed By 정상우.
hgk0404.tistory

Code After Work

[머신러닝]/[Numpy, Pandas]

[Numpy] 넘파이 랜덤 함수 정리

2023. 8. 30. 11:35
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
'[머신러닝]/[Numpy, Pandas]' 카테고리의 다른 글
  • [Pandas] axis=0, axis=1에 관하여
  • [Pandas] groupby 2.0 version 이후
  • [Pandas] 판다스 csv, sort_values(), by, ascending, 통계량 계산
  • [Pandas] CSV파일에 데이터 쓰기
hgk0404.tistory
hgk0404.tistory
공부기록

티스토리툴바