일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Ai
- Java
- 모각코
- 데이터
- 데이터분석
- AI 윤리
- ai 전문가 과정
- dictionary
- Python
- 코딩테스트
- 파이썬
- 정처기 실기
- 알고리즘
- LG Aimers
- AIVLE
- AI학습
- KT
- 백준
- pandas
- 자바
- 인공지능
- 코딩
- github
- numpy
- git
- KT AIVLE
- 정처기
- 클래스
- 데이터과학
- list
- Today
- Total
무향향수
[Python] random 이해하기 (rand, randint, randn) 본문
목차☃️
1. random (rand(), randint(), randn())
2. 몬테카를로 분석 (random 활용하기)
학습 이유
데이터 분석을 할 때 랜덤 숫자를 자주 사용한다는 사실을 알고 랜덤하게 숫자를 발생시키는 numpy기능인 random에 미리 공부해야겠다 생각하여 블로그에 정리하게 되었다.
☃️ 1. random
데이터 분석시 랜덤하게 발생하는 숫자를 자주 사용한다.
numpy 라이브러리에 구현되어 있으며 np.random.rand() & np.random.randint() & np.random.randn() 이렇게 세가지가 있다.
rand()
rand() : 0과 1사이 균등분포의 random 수(실수)
import numpy as np
np.random.rand(3)
# array([0.70892112, 0.34300446, 0.23220519]) <-- 항상 랜덤한 숫자가 출력된다.
randint(start, end, count)
randint(start, end, count) : (start ~ (end - 1)) 범위의 균등분포 count개 random 수 (정수))
import numpy as np
np.random.randint(1, 100, 5)
# array([30, 22, 57, 90, 68]) => 1부터 99까지 랜덤 숫자 5개를 포함하는 배열이 출력된다.
randn()
randn() : 정규(Gaussian) 분포의 random 수 (평균 0, 표준편차 1)
⭐⭐ 0 ~ 1 사이 값이 아니다! ⭐⭐
import numpy as np
np.random.randn(3)
# array([ 1.27191272, -0.27972859, 1.09619211]) => 랜덤 숫자 3개가 배열에 저장되어 출력
사용예시
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline # 그래프를 화면에 출력
x = range(100)
y = np.random.rand(100) # 랜덤 숫자를 배열에 저장
plt.scatter(x, y)
plt.xlabel = "x축"
plt.ylabel = "y축"
☃️ 2. 몬테카를로 분석
random() 시뮬레이션으로 원주율(pi)을 구현해본다.
원의 면적은 pi * r**2 이므로 아래 코드와 같이 반경이 1인 원과 사각형의 관계에서 랜덤하게 0~1 사이의 값을 두 개씩 만들고 각각(x, y) 좌표로 지정하면, 이 점이 원 내부에 들어올 확률을 실제 개수를 세어 구할 수 있다.
확률은 면적의 비율이므로 pi를 다음과 같이 구할 수 있다.
pi = 4 * (랜덤한 점이 원 내부에 들어올 확률)
프로그램으로 구현하면 랜덤하게 1만개의 샘플 점을 생성하여 구현할 수 있다.
n의 개수를 늘리면 더 정확한 pi값을 시뮬레이션으로 구할 수 있게 된다.
이러한 기법을 몬테카를로 방식이라고 한다.
import numpy as np
import matplotlib.pyplot as plt
n = 10000
x = np.random.rand(n)
y = np.random.rand(n)
plt.figure(figsize = (6, 6))
plt.scatter(x, y, s = 1) # 그래프에 10000개 점을 흩뿌려준다.
xx = np.linspace(0, 1, 100)
plt.plot(xx, (1 - xx * xx) ** 0.5, c = 'r') # 그래프에 원을 그려준다.
pi = ((x ** 2 + y ** 2) < 1).mean() * 4
pi # 원주율
plt.figure(figsize=(6,6))
여러 개의 그래프를 그릴 때 figure()를 사용한다.
plt.figure(figsize=(6,6))
# 여러 개의 그래프를 그릴 때 사용된다.
np.linspace(start, end, count)
np.linspace(1, 10, 10)
# 1부터 10까지의 값으로 구성된 배열이 생성된다.
Numpy는 아래 글 참조!
[Python] Numpy(넘파이) 기능 이해하기
목차 🐢 Numpy Numpy의 이해 Numpy 배열 생성 더보기 학습 이유 파이썬을 이용한 데이터 분석에 대해 학습하면서 numpy 라이브러리를 사용한 실습 예제들이 자주 출제되어 numpy가 무엇인지 정확하게
angidgidtn.tistory.com
Matplotlib는 아래 글 참조!
[Python] Matplotlib 기능 이해하기
목차 🌝 Matplotlib 더보기 학습 이유 파이썬 데이터 분석에 필수적으로 사용되는 matplotlib에 대해 학습하여 데이터 분석한 결과를 쉽게 시각화하기 위하여 학습하게 되었다. 🌝 1. Matplotlib matplotlib
angidgidtn.tistory.com
'데이터분석_Python' 카테고리의 다른 글
[데이터분석 특강] (0) | 2024.07.09 |
---|---|
[Python] Matplotlib 기능 이해하기 (0) | 2023.08.04 |
[Python] Numpy(넘파이) 기능 이해하기 (0) | 2023.08.04 |
[Python] 파이썬 함수 사용 방법 (0) | 2023.08.04 |
[Python] 데이터 분석, 데이터 사이언스 (0) | 2023.08.03 |