벡터 공간 V의 basis는 V라는 공간을 채울 수 있는 선형 관계에 있지 않은 벡터들의 모음
matrix의 행,열을 이루고 있는 벡터들로 만들 수 있는 공간의 차원
np.linalg.matrix_rank(A)
두 벡터의 조합으로 만들 수 있는 모든 가능한 벡터의 집합
두 벡터가 이루는 각이 수직이면 그 상태를 orthogonality라고 함
특정벡터를 다른 벡터로 전사시킨 벡터
ex. w를 v로 projection
=>
import matplotlib.pyplot as plt
v = [7, 4]
def myProjection(v):
v = np.array(v)
w = np.array([15,15])
v_pro = (np.dot(v,w)/np.dot(w,w))*w
return v_pro
vprime = myProjection(v)
x = np.linspace(0,10,20)
y = x*1
plt.figure(figsize = (7,7))
plt.xlim((0,10))
plt.ylim((0,10))
plt.arrow(0,0,7,4, color='blue', head_width = .2)
plt.plot(x,y, color='red')
plt.arrow(0,0,vprime[0],vprime[1], color = 'green', linestyle ='--', head_width = .2, linewidth = 3)
plt.plot([7,vprime[0]],[4,vprime[1]], color = 'gray', linestyle='--')
plt.show()
파이썬으로 구현
def mymean(v):
result = 0
for i in v:
result += i
return result/len(v)
def myvar(v): #모분산
dif = np.array(v)-mymean(v)
dif2 = (dif**2).sum()
result = dif2/len(v)
return result
def mystd(v): #모집단의 표준편차
result = np.sqrt(myvar(v))
return result
def myvar2(v): #표본분산
dif = np.array(v)-mymean(v)
dif2 = (dif**2).sum()
result = dif2/(len(v)-1)
return result
def mystd2(v): #표본의 표준편차
result = np.sqrt(myvar2(v))
return result
두 변수 간의 선형관계를 나타내는 값
#직접구현
mean1 = mymean(v)
dif1 = np.array(v)-mean1
mean2 = mymean(v2)
dif2 = np.array(v2)-mean2
cov = ((dif1*dif2).sum())/(len(v)-1)
#numpy 사용
np.cov(v1,v2)[0,1]
covariance는 데이터의 scale에 의존하는 경향이 있어서 정확한 관계를 이야기하기 어려움. Correlation은 이런 문제를 스케일링을 통해 해결
#직접구현
corr = cov/(mystd2(v)*mystd2(v2))
#numpy 사용
np.corrcoef(v1,v2)[0,1]
#scipy 사용
stats.pearsonr(A,B)
#correlation, p-value 반환
categorical data의 단조성을 평가하기 위해 사용됨
단조성이 좋다는 것은 한 변수의 값의 크기가 커지면, 다른 변수의 크기도 커진다는 뜻
from scipy import stats
stats.spearmanr(A,B)
#correlation, p-value 반환
벡터 arrow
plt.arrow(x,y, dx,dy, head_width = 0.2, linewidth = 3, color = '')
plot과 다른점은 plot은 모든x, 모든y 순으로 데이터가 입력되는데 arrow의 경우 시작점, 끝점의 좌표를 각각 입력으로 넣는다는 점이 다름
3차원
fig = plt.figure()
ax = fig.gca(projection='3d')
X = [0,0,0]
Y = [0,0,0]
Z = [0,0,0]
l = [1,2,3]
m = [-1,0,7]
n = [4,8,2]
ax.set_xlim(-1,10)
ax.set_ylim(-1,10)
ax.set_zlim(-1,10)
ax.quiver(X,Y,Z,l,m,n, color=['red','blue','green'])
알아보기 : matplotlib에서의 gca, plt.subplots,np.meshgrid