2์ฃผ์ฐจ ์์์ผ
- Numpy
- Numpy operation
- ๋ฒกํฐ
- ํ๋ ฌ
์ ํ๋์๋ ๊ณผํ ๊ณ์ฐ์ ์ํ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ๋ค์ํ ๊ณ ๊ธ ๊ณ์ฐ์ ์ง์ํ๋ค.
np
๋ผ๋ alias๋ก ๋ถ๋ฌ์ค๋ ๊ฒ ์๋ฌต์ ์ธ ๊ท์น์ด๋ค. import numpy as np
np.array()
๋ก ์ ์ธํ๋๋ฐ, ์์ฑ๋ ๊ฐ์ฒด๋ ๋ฆฌ์คํธ๋ ํํ ๊ฐ์ ๊ฒ ์๋๋ผ ๋ํ์ด ๊ณ ์ ์ ndarray
ํ์
์ด๋ค. ndarray ๊ฐ์ฒด๋ ๋์ ํ์ดํ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ C์ธ์ด์ array์ฒ๋ผ ํ ์ข
๋ฅ์ data type๋ง ๋ฃ์ ์ ์๋ค. (์ค์ ๋ก C๋ฅผ ์ฌ์ฉํด ๊ตฌํ๋์ด ์๋ค)import numpy as np
myarr = np.array([1, "2", 3.0], float)
# ์ฌ๋ฌ ํ์
์ด ์์ฌ ์๋ ๊ฒฝ์ฐ ์๋ฃํ์ ์ง์ ํด์ ํตํฉํ ์ ์๋ค
print(myarr)
>>> [1. 2. 3.]
๋ฆฌ์คํธ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๊ธฐ์ ๊ธฐ ํฉ์ด์ง ๊ฐ๋ค์ ์ฃผ์๋ง ๋ชจ์ ๋์ ์๋ฃํ์ธ ๋ฐ๋ฉด array๋ ๊ฐ๋ค์ด ์ฐจ๋ก๋๋ก(์ง์ด๋ฃ์ ์์๋๋ก) ๋ชจ์ฌ ์์ด์ ์๋๊ฐ ๋น ๋ฅด๋ค.
shape
, ndim
, size
print(np.array([1, 2, 3, 4]).shape)
>>> (4,) # shape ์์ฑ์ ํํ
print(np.array([[1,2,3,4], [5,6,7,8]]).shape)
>>> (2,4) # ์ฃผ์!!! (4,2)๊ฐ ์๋๋ค!!!
ndarray
๊ฐ์ฒด์ ์์ฑ shape
๋ฅผ ์ฐ์ด๋ณด๋ฉด ๋์ค์ ์ถ๊ฐ๋ axis๊ฐ ๋ ๋จผ์ ๋์จ๋ค!
ndim
์์ฑ์ ์ฐจ์ ์๋ฅผ ์๋ฏธํ๊ณ , size
์์ฑ์ ์ด ์์ ์๋ฅผ ์๋ฏธํ๋ค.
print(np.array([[1,2,3,4], [5,6,7,8]]).ndim)
print(np.array([[1,2,3,4], [5,6,7,8]]).size)
>>> 2
8
reshape()
๋ array์ ์ฐจ์์ ์ฌ์กฐ์ ํด์ค๋ค. ๋จ, ์ฌ์กฐ์ ์ ํ์ size
๋ ๋์ผํด์ผ ํ๋ค.myarr = np.array([1,2,3,4,5,6,7,8])
print(myarr.reshape(4,2)) # ์ฐจ์ ํ๊ธฐ ์ฃผ์
>>> [[1 2]
[3 4]
[5 6]
[7 8]]
reshape
์ ์ธ์ ์ค ํ๋์ -1์ ์ง์ด๋ฃ์ ์๋ ์๋ค(unknown dimension). ๊ทธ๋ฌ๋ฉด array์ size์ ์
๋ ฅํ ํญ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ์์์ ์ฐจ์์ ์ฌ์กฐ์ ํด์ค๋ค.
myarr = np.array([1,2,3,4,5,6,7,8])
print(myarr.reshape(2,-1,2))
>>> [[[1 2]
[3 4]]
[[5 6]
[7 8]]]
flatten()
์ array๋ฅผ 1์ฐจ์์ผ๋ก ๋ฉ์ํ๊ฒ ํด ์ค๋ค.
myarr = np.array([[1,2,3,4], [5,6,7,8]])
print(myarr.flatten())
>>> [1, 2, 3, 4, 5, 6, 7, 8]
range
์ ๋น์ทํ๋ฐ step์ float๋ก ์ค์ ํ ์๋ ์๋ค.myarr = np.array(arange(0,2,0.5))
print(myarr)
>>> [0., 0.5, 1., 1.5]
array๋ผ๋ฆฌ์ ์ฐ์ฐ์ element-wiseํ๋ค. (๋ฒกํฐ ์ฐ์ฐํ๋ฏ์ด ์์๋ผ๋ฆฌ ์ฐ์ฐํ๋ค)
axis
์ฐ์ฐ์ ๊ธฐ์ค์ด ๋๋ dimension์ ์ถ. 0๋ถํฐ ์ธ๋ฉฐ ์๋ก ์๊ธด ์ถ์ด ํญ์ axis 0
์ด๋ค.
2์ฐจ์ array๋ 1์ฐจ์ array๋ฅผ ์์์ ๋ง๋ค์์ผ๋๊น ๊ฐ๋ก์ถ์ด axis 1
, ์ธ๋ก์ถ์ด axis 0
์ด๋ค.
์ฐ๊ฒฐํ๊ธฐ
๋ array๊ฐ ๋ถ๋ ๋ถ๋ถ์ ์ฐจ์์ด ์ผ์นํด์ผ ํ๋ค.
concatenate([arr1, arr2])
: ์ถ์ ์ง์ ํด์ ์ฌ์ฉํ๋ฉฐ, ์ง์ ํ ์ถ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐ๋๋ค.vstack([arr1, arr2])
: ๋ array๊ฐ ์์ง์ผ๋ก ์ฐ๊ฒฐ๋๋ค.hstack([arr1, arr2])
: ๋ array๊ฐ ์ํ์ผ๋ก ์ฐ๊ฒฐ๋๋ค.๊ณต๊ฐ ์์์ ํ ์ ์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ. ํ๊ธฐํ ๋๋ ์ฃผ๋ก x์ฒ๋ผ ์๋ฌธ์ ๋ณผ๋์ฒด๋ก ๋ํ๋ธ๋ค.
norm(๋
ธ๋ฆ, ๋)
์์ ์์ ์ด๋ค ๋ฒกํฐ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ด๋ ๋ฐฉ์. L1 norm, L2 norm ๋ฑ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ธ ์์์ d์ฐจ์์ ๋ํด ์ฑ๋ฆฝํ๋ค.
๊ฑฐ๋ฆฌ์ ์ ์๋ก ์ด๋ค norm์ ์ฌ์ฉํ๋์ ๋ฐ๋ผ ๊ธฐํํ์ ์ฑ์ง๋ ๋ฌ๋ผ์ง๋ค.
์์ ์์ ์์๋ถํฐ์ ๊ฑฐ๋ฆฌ(norm)๊ฐ 1์ธ ์ ๋ค์ ์งํฉ
์ธ๋ฐ, L1 norm ๊ณต๊ฐ ์์ ์๊ณผ L2 norm ๊ณต๊ฐ ์์ ์์ ๋ชจ์ต์ด ์์ฃผ ๋ค๋ฅด๋ค.
๋ฒกํฐ์ ๋ด์
ํ ๋ฒกํฐ๋ฅผ ๋ค๋ฅธ ๋ฒกํฐ์ ํฌ์ํ์ ๋์ ๊ธธ์ด.
๋ฒกํฐ y์ x๋ฅผ ํฌ์ํ๋ฉด ||y|| ||x|| cosฮธ๊ฐ ๋๋๋ฐ, ์ด๊ฒ์ x์ ์ ์ฌ์์ y์ ๊ธธ์ด๋งํผ ์กฐ์ ํ ๊ฐ์ด๋ค. ๋ด์ ์ ์ด์ฉํด ๋ ๋ฒกํฐ์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๊ธฐ๋ ํ๋ค.
๋ฒกํฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ
๋ฒกํฐ์ ๋บ์
๊ณผ norm์ ํตํด ๊ตฌํ ์ ์๋ค.
๋ ๋ฒกํฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ : ||x - y||
๋ฒกํฐ ์ฌ์ด์ ๊ฐ๋
L2 norm์ผ๋ก๋ง ๊ตฌํ ์ ์๋ค.
์ 2์ฝ์ฌ์ธ๋ฒ์น์ ์ฌ์ฉํ๋๋ฐ, ๋ถ์๋ฅผ ์ฝ๊ฒ ๊ณ์ฐํ๊ธฐ ์ํด ๋ฒกํฐ์ ๋ด์ ์ ์ฌ์ฉํ๋ค.
<x,y> : ๋ฒกํฐ x, y์ ๋ด์
ํ๋ ฌ์ ์๋ฏธ
ํ๋ ฌ์ ๋ ๊ฐ์ง ์๋ฏธ๋ก ์ดํดํ ์ ์๋ค. ํ๋ ฌ์ ํ๊ธฐํ ๋๋ ์ฃผ๋ก A์ฒ๋ผ ๋๋ฌธ์ ๋ณผ๋์ฒด๋ก ๋ํ๋ธ๋ค.
๋ฒกํฐ๋ค์ ์งํฉ
n์ฐจ์ ๋ฒกํฐ๋ฅผ n์ฐจ์ ๊ณต๊ฐ ์์ ์ ์ผ๋ก ๋ณธ๋ค๋ฉด ํ๋ ฌ์ ๊ทธ ์ ๋ค์ ์งํฉ์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
๋ณํ ์ฐ์ฐ์
์ด๋ค ๋ฒกํฐ x์ ํ๋ ฌ A๋ฅผ ๊ณฑํ๋ฉด ๋ฒกํฐ์ ์ฐจ์์ด ๋ณํ๊ธฐ๋ ํ๋ค. ๋ฐ๋ผ์ ํ๋ ฌ์ ๋ฒกํฐ๋ฅผ ๋ค๋ฅธ ์ฐจ์์ ๊ณต๊ฐ์ผ๋ก ๋ณด๋ผ ์ ์๋ ์ฐ์ฐ์๋ผ๊ณ ์๊ฐํ ์ ์๋ค. (๋ฒกํฐ์ ๋ณํํ๋ ฌ์ ๊ณฑํ๋ฉด ์ ๋ง ๊ทธ๋ ๊ฒ ๋๋ค)
ํ๋ ฌ์ ๊ณฑ์
๋ ํ๋ ฌ A์ B๋ฅผ ๊ณฑํ ํ๋ ฌ AB์ ์ฑ๋ถ (i, j)๋ ๊ฐ๊ฐ A์ i๋ฒ์งธ ํ๋ฒกํฐ์ j๋ฒ์งธ ์ด๋ฒกํฐ์ ๋ด์ ์ด๋ค.
ํ๋ ฌ์ ๊ณฑ์
์ ์ฐจ์์ด ๋ง์์ผ ํ ์ ์์ผ๋ฉฐ(a x n ํ๋ ฌ๊ณผ n x b ํ๋ ฌ๋ผ๋ฆฌ), ๊ตํ๋ฒ์น์ด ์ฑ๋ฆฝํ์ง ์๋๋ค.
์ญํ๋ ฌ
ํ๋ ฌ๊ณฑ์ ๋๋๋ฆฌ๋ ์ฐ์ฐ์ผ๋ก, ํ๋ ฌ A-1๊ณผ ๊ฐ์ด ๋ํ๋ธ๋ค. ํ๋ ฌ์ ์ญํ๋ ฌ์ ๊ณฑํ๋ฉด ๋จ์ํ๋ ฌ I๊ฐ ๋๋ฉฐ, ํ๋ ฌ์ ์ญํ๋ ฌ์ ๊ณฑํ ๋๋ ๊ตํ๋ฒ์น์ด ์ฑ๋ฆฝํ๋ค. ์ ์น ํ๋ ฌ์ ๋ํด์๋ง ์ญํ๋ ฌ์ ๊ตฌํ ์ ์๋ค. (n x n ํ๋ ฌ์ด๋ฉฐ determinant๋ฅผ ๊ตฌํ ์ ์์ด์ผ ํ๋ค)
numpy์์๋ np.linalg.inv(A)
๋ฅผ ํตํด ์ญํ๋ ฌ์ ๊ตฌํ ์ ์๋ค.
์์ฌ ์ญํ๋ ฌ(pseudo inverse, ๋ฌด์ด-ํ๋ก์ฆ ์ญํ๋ ฌ)
์ ์น ํ๋ ฌ์ด ์๋ ํ๋ ฌ (n x m์ด๊ฑฐ๋ determinant๋ฅผ ๊ตฌํ ์ ์๋ ํ๋ ฌ)์ ์ญํ๋ ฌ๋ก, A+๊ณผ ๊ฐ์ด ๋ํ๋ธ๋ค. n๊ณผ m์ ํฌ๊ธฐ ์ฐจ์ด์ ๋ฐ๋ผ ์ข์ธก/์ฐ์ธก์ผ๋ก ๊ณฑํ๋ ์์น๊ฐ ๋ค๋ฅด๋ค.
n >= m (์ฐ ์ญํ๋ ฌ)
A+ = (ATA)-1 AT
AA+ = I
n <= m (์ข ์ญํ๋ ฌ)
A+ = AT (ATA)-1
A+A = I
์ข / ์ฐ๋ก ๊ณฑํ๋ ์์น๊ฐ ๋ค๋ฅธ ์ด์ ๋ ํ๋ ฌ์ ๋ชจ์ ๋๋ฌธ์ด๋ค.
์ฐ๋ฆฝ๋ฐฉ์ ์์ ํด๊ฐ ๋ถ์ (๋ณ์>์)์ธ ๊ฒฝ์ฐ ์์ฌ ์ญํ๋ ฌ์ ์ด์ฉํ๋ฉด ๋ฌดํํ ํด ์ค ํ๋๋ฅผ ๊ตฌํ ์ ์๋ค.
์คํํฌ์ ํ๋ก์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๋ค. ์คํํฌ์ ํ๋ก ๋ชจ๋ ํด๋ฌ์คํฐ ์ปดํจํ ํ๊ฒฝ์์ ๋น ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์ฒ๋ฆฌ, ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฒ๋ฆฌ ์์คํ ์ผ๋ก, ์คํํฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ์๋๊ฐ ๋น ๋ฅด์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋ค ๋ชป ์ฌ๋ฆด ์ ๋๋ก ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ์๋ ํ๋ก์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
๊ทธ ๋ฐ์๋ ์ ํซ ์ธ์ฝ๋ฉ ๋ฑ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ ๋ฐ์ดํฐ์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ดํ ์ด์ผ๊ธฐ์ ์์ธก/๋ถ๋ฅ ๋ชจ๋ธ์ ์๋ ๋ฐฉ์ ์ฐจ์ด์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๋ค.