์ฃผ์ด์ง ๋ฐ์ดํฐ (x, y)์ ๋ํด์ y = x ๋ผ๋ ๋ฒกํฐ์ ๋ํด projection์ ๊ณ์ฐํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
(x, y) ๋ (0, 0) ์์ (x, y)๋ก ๊ฐ๋ ๋ฒกํฐ๋ผ ๊ฐ์ ํฉ๋๋ค.
์ดํ
์
๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์ ์ผ๋ก,
y = x ๋ผ๋ ๋ฒกํฐ๋ฅผ ๋นจ๊ฐ์ ์ ์ผ๋ก, ๋ง์ง๋ง์ผ๋ก
projection ๋ ์ ์ ๋
น์ ์ ์ (dashed)์ผ๋ก ๊ทธ๋ํ์ ๊ทธ๋ฆฌ์ธ์.
- y=x์ ํด๋นํ๋ ์์์ ๋ฒกํฐ([10, 10])๋ฅผ ์ค์ ํ์ฌ ๋ด์ ๋ฐ projection์ ์งํํ์์ต๋๋ค.
import numpy as np
v = [7, 4]
a = [10, 10] # y = x ์์ ์์์ ๋ฒกํฐ ์ ์
# u๋ v๋ฅผ y = x ์์ projectionํ ๋ฒกํฐ
def myProjection(v, a):
v = np.array(v)
a = np.array(a)
u_value = np.dot(v,a) / np.linalg.norm(a) # ํฌ๊ธฐ ๊ตฌํ๊ธฐ
u_hat = np.array(a) / np.linalg.norm(a)
return u_value * u_hat
vprime = myProjection(v, a)
vprime
array([5.5, 5.5])
- ์๊ฐํ
import matplotlib.pyplot as plt
%matplotlib inline
plt.arrow(0, 0, v[0], v[1], head_width = .5, head_length = .5, color='b')
plt.arrow(0, 0, a[0], a[1], head_width = .5, head_length = .5, color='r')
plt.arrow(0, 0, vprime[0], vprime[1], head_width = .5, head_length = .5, color='g', ls=(0, (3, 10, 1, 10)))
plt.xlim(0, 15)
plt.ylim(0, 15)
plt.title('projection')
plt.show()
์ด์์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. :)
'๐ฟ Data > ์ด๋ชจ์ ๋ชจ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ ์์1 (0) | 2021.12.07 |
---|---|
Cramer's rule(ํฌ๋ ์ด๋จธ ์๊ฑฐ๋ฒ) (0) | 2021.12.07 |
Scree Plot ํ์ฉ๋ฒ (0) | 2021.12.07 |
Dendrogram์ ํตํ Clustering ์๊ฐํ ๋ฐ Elbow Method (0) | 2021.12.06 |
Clustering(๊ตฐ์งํ) (0) | 2021.12.06 |