from numpy import random
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
Random Numbers in NumPy (๋ํ์ด ๋์)
- ๋ฌด์์๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋
ผ๋ฆฌ์ ์ผ๋ก ์์ธกํ ์ ์๋ ์
- ๋์๋ฅผ ์์ฑํ๋ ์๊ณ ๋ฆฌ์ฆ
- ์์ฑ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์์ฑ๋ ๋์
randint()
- ์ ์๋ก ๋์ ์์ฑ
- ๊ฐํธํ๊ฒ ๋ก๋๋ฒํธ ์์ฑ
lt = random.randint(46, size=(5))
print(lt)
rand()
๋ฌด์์ ํ๋กฏ ์์ฑ(Random Float) 0๊ณผ 1์ฌ์ด์ ๋ถ๋์์์ ์์ฑ
Float = random.rand()
print(Float)
Data Distribution [๋ฐ์ดํฐ ๋ฐฐํฌ]
- ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ๊ณผ ๊ฐ ๊ฐ์ด ๋ฐ์ํ๋ ๋น๋์ ๋ชฉ๋ก
- ์ด๋ฌํ ๋ชฉ๋ก์ ํต๊ณ ๋ฐ ๋ฐ์ดํฐ/๊ณผํ ์์
์ ํ ๋ ์ค์ํ๋ค
- ๋ฌด์์ ๋ถํฌ๋ ํน์ ํ๋ฅ ๋ฐ๋ํจ์. ์ฐ์์ ์ธ ํ๋ฅ ์ ์ค๋ช
ํ๋ ํจ์, ๋ฐฐ์ด์ ์๋ ๋ชจ๋ ๊ฐ์ ํ๋ฅ
- choice() ๋ชจ๋์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ ์๋ ํ๋ฅ ์ ๊ธฐ๋ฐ์ผ๋ก ๋์๋ฅผ ์์ฑํ ์ ์๋ค
- ํ๋ฅ ์ 0๊ณผ 1์ฌ์ด์ ์ซ์๋ก ์ค์ ๋๋ค 0 = ๊ฐ์ด ๊ฒฐ์ฝ ๋ฐ์ํ์ง ์์์ ์๋ฏธํ๊ณ 1 = ๊ฐ์ด ํญ์ ๋ฐ์ํจ์ ์๋ฏธํ๋ค
choice()
๋ฐฐ์ด ๋งค๊ฐ๋ณ์์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ 2์ฐจ์ ๋ฐฐ์ด์ ์์ฑ
q = random.choice([3,5,7,9], p=[0.1, 0.3, 0.6, 0], size = (3,5))
print(q)
size??
๋๋ค์ ํ๋ฅ ์ ์กฐ์ ํ๋ค
1์ฐจ์ ๋ฐฐ์ด 3,5,7,9
๊ฐ์ด 3์ด ๋ ํ๋ฅ 0.1
๊ฐ์ด 5๊ฐ ๋ ํ๋ฅ 0.3
๊ฐ์ด 7์ด ๋ ํ๋ฅ 0.6
๊ฐ์ด 9๊ฐ ๋ ํ๋ฅ 0์ผ๋ก ์ค์ ํฉ๋๋ค
normal()
- ์์ ์ ๊ท ๋ถํฌ๋ฅผ ์์ฑํฉ๋๋ค
e = random.normal(size=(2,3))
print(e)
- 2x3ํฌ๊ธฐ์ ๋๋ค ์ ๊ท ๋ถํฌ๋ฅผ ์์ฑํฉ๋๋ค
shuffle()
- ๋ฐฐ์ด์ ์์๋ฅผ ๋ฌด์์๋ก ์๋๋ค (์๋ณธ์ ์์ ํ๋ค)
permutation()
- ์๋ ๋ฐฐ์ด(์๋ณธ)์ ์ฌ๋ฐฐ์ดํ์ง ์๊ณ ์ฌ๋ฐฐ์ด๋ ๋ฐฐ์ด์ ๋ณด์ฌ์ค๋ค.
๋ถํฌ๋
1. ์ดํญ ๋ถํฌ
์ด์ฐ๋ถํฌ๋ฅผ ์๋ฏธํ๋ฉฐ ๋์ ๋์ง๊ธฐ์ ๊ฐ์ ์ด์ง ์๋๋ฆฌ์ค๋ฅผ ์ค๋ช ํ๋ค (์๋ฉด ๋๋ ๋ท๋ฉด)
์ธ๊ฐ์ง ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ค n(์ํํ์) p(๊ฐ ์ํ์ ๋ฐ์ํ๋ฅ ) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
์ ๊ท๋ถํฌ์์ ๋น๊ต - ์ ๊ท๋ถํฌ๋ ์ฐ์์ ์ธ ๋ฐ๋ฉด ์ดํญ์ ์ด์ฐ์ ์ด๋ค
scale ? ๋์ ๋์ง๊ธฐ์ ๋ํด 10๋ฒ์ ์๋๊ฐ ์ฃผ์ด์ง๋ฉด 10๊ฐ์ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์ค์ ๋๋ค
q = random.binomial(n=10, p=0.5, size=10)
sns.distplot(random.normal(loc=50, scale=5, size=1000), hist=False, label='normal')
sns.distplot(random.binomial(n=10, p=0.5, size=1000), hist=False, label='binomial')
plt.show()
2. ํฌ์์ก๋ถํฌ
ํน์ ์๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ช ๋ฒ ๋ฐ์ํ ์ ์๋์ง ์ถ์ ํ๋ค
์) ํ๋ฃจ์ ๋ฐฅ์ ๋๋ฒ ๋จน๋๋ค๋ฉด ๊ทธ๊ฐ ๋ฐฅ์ ์ธ๋ฒ ๋จน์ ํ๋ฅ ์ ์ผ๋ง๋ ๋๋๊ฐ?
lam : ๋ฐ์๋ฅ ๋๋ ์๋ ค์ง ๋ฐ์ํ์ , ์์ ์์์ ๊ฒฝ์ฐ 2
size : ๋ฐํ๋ ๋ฐฐ์ด๊ฐ
q = random.poisson(lam=2, size=10)
print(q)
#๋ฐ์ 2์ ๋ํด ์์์ 1 x 10 ๋ถํฌ๋ฅผ ์์ฑํ๋ค
sns.distplot(random.poisson(lam=2, size =1000), kde=False)
plt.show()
3. ๊ท ๋ฑ๋ถํฌ
๋ชจ๋ ์ฌ๊ฑด์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ผํ ํ๋ฅ ์ ์ค๋ช
ํ๋๋ฐ ์ฌ์ฉ๋๋ค uniform()
๋งค๊ฐ๋ณ์ a(ํํ =>๊ธฐ๋ณธ๊ฐ์ 0.0) b(์ํ =>๊ธฐ๋ณธ๊ฐ์ 1.0) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
w = random.uniform(size=(2,3))
print(w)
sns.distplot(random.uniform(size=1000), hist=False)
plt.show()
4. ๋ฌผ๋ฅ๋ถํฌ
๋ฌผ๋ฅ์ฑ์ฅ์ ์ค๋ช
ํ๋ ๋ฐ ์ฌ์ฉํ๋ค logistic()
๋ก์ง์คํฑ, ํ๊ท, ์ ๊ฒฝ๋ง ๋ฑ์ ๋จธ์ ๋ฌ๋์ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋๋ค
loc(์ ์ ์ด ์ด๋์ธ์ง๋ฅผ ์๋ฏธํจ, ๊ธฐ๋ณธ๊ฐ์ 0) scale(ํ์คํธ์ฐจ, ๋ถํฌ์ ํํ์ฑ) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
r = random.logistic(loc=1, scale=2, size =(2,3))
print(r)
# ํ๊ท ์ด 1์ด๊ณ stddev(ํ์คํธ์ฐจ)๊ฐ 2.0์ธ ๋ก์ง์คํฑ๋ถํฌ์์ 2 x 3 ์ํ์ ๊ทธ๋ฆฐ๋ค
sns.distplot(random.logistic(size=100),hist=False)
plt.show()
5. ๋คํญ๋ถํฌ
์ดํญ๋ถํฌ๋ฅผ ์ผ๋ฐํ ํ ๊ฒ์ด๋ค. ๋ ์ค ํ๋์ธ ์ดํญ์๋๋ฆฌ์ค์ ๋ค๋ฅด๊ฒ ํ์กํ, ์ฃผ์ฌ์์ ๊ตด๋ฆผ ๊ฒฐ๊ณผ์ ๊ฐ์ ๋คํญ์๋๋ฆฌ์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช
ํ๋ค.
n(๊ฐ๋ฅํ ๊ฒฐ๊ณผ์ ์) pvals(๊ฒฐ๊ณผํ๋ฅ ๋ชฉ๋ก) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
u = random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6])
print(u)
sns.distplot(random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6]),hist=False)
plt.show()
6. ์ง์๋ถํฌ
์คํจ/์ฑ๊ณต ๋ฑ ๋ค์ ์ด๋ฒคํธ๊น์ง์ ์๊ฐ์ ์ค๋ช
ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค exponential()
scale(๋น์จ์ ์ญ์=ํฌ์์ก๋ถํฌ์ ๋จ, ๊ธฐ๋ณธ๊ฐ์ 1.0) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
sns.distplot(random.exponential(size=1000), hist=False)
plt.show()
7. ์นด์ด์ ๊ณฑ๋ถํฌ
๊ฐ์ค๊ฒ์ฆ์ ๊ธฐ์ด๋ก ์ฌ์ฉ๋๋ค
df(์์ ๋) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
p = random.chisquare(df=2, size=(2,3))
print(p)
8. ๋ ์ผ๋ฆฌ๋ถํฌ
์ ํธ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ค
scale(๋น์จ์ ์ญ์=ํฌ์์ก๋ถํฌ์ ๋จ, ๊ธฐ๋ณธ๊ฐ์ 1.0์ด๋ค) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
a = random.rayleigh(scale=2, size=(2,3))
print(a)
9. ํ๋ ํ ๋ถํฌ
ํ๋ ํ ์ ๋ฒ์น์ ๋ฐ๋ฅด๋ ๋ถํฌ 80-20๋ถํฌ์ด๋ค
20% ์์ธ์ด 80% ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฐํ๋ค ํ์ชฝ์ผ๋ก ํธ์ค๋ ๋ชจ์
a(๋ชจ์ ๋งค๊ฐ๋ณ์) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
sns.distplot(random.pareto(a=2, size=1000),kde=False)
plt.show()
10. Zipf๋ฐฐํฌ
๋ค์ฏ๋ฒ์งธ๋ก ๊ฐ์ฅ ํํ ๋จ์ด๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋จ์ด๋ณด๋ค ๊ฑฐ์ 1/5๋ฐฐ ๋ ์์ฃผ ๋ํ๋๋ค
๋ชจ์์์ n๋ฒ์งธ ๊ณตํต์ฉ์ด๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฉ์ด์ 1/n๋ฐฐ ์์ด์์ ๋ค์ฏ๋ฒ์งธ๋ก ํํ ๋จ์ด๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋จ์ด๋ณด๋ค ๊ฑฐ์ 1/5๋ฐฐ ๋ ์์ฃผ ๋ํ๋๋ค
a(๋ถํฌ ๋งค๊ฐ๋ณ์) size(๋ฆฌํด๋ ๋ฐฐ์ด์ ๋ชจ์)
s = random.zipf(a=2, size=1000)
sns.distplot(s[s<10], kde=False)
plt.show()
'Python > Python Language' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
NumPy ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ฐฐ์ด์ ํจ์จ์ ์ธ UFUNC ํจ์ ๊ฐ๋ (0) | 2024.04.24 |
---|---|
Numpy ๋ฐฐ์ด(Array)์ ๋ํ ๊ฐ๋ ์ค๋ช (0) | 2024.04.24 |
๋๋ค(Lambda) : ์ต๋ช ํจ์ ๊ฐ๋ ์ค๋ช (0) | 2024.04.24 |
์ ๊ท์ ํจ์ (Python RegEx) (0) | 2024.04.24 |
ํ์ด์ฌ Datetime ํฌ๋งท ๊ฐ์ด๋: strftime ์ฝ๋ ์์์ ์ค๋ช (2) | 2024.04.24 |