▶ 육상선수 종목별 기록 데이터
import numpy as np
A = np.array([
[3.73, 1.86, 15.8, 4.05, 7.27, 45.66, 34.92 ],
[3.57, 1.80, 16.23, 2.96, 6.71, 42.56, 37.31],
[3.22, 1.83, 14.20, 3.51, 6.68, 44.54, 39.23],
[2.81, 1.80, 15.23, 2.69, 6.25, 42.78, 31.19],
[2.91, 1.74, 14.76, 2.68, 6.32, 47.46, 35.53],
[2.67, 1.83, 13.50, 1.96, 6.33, 42.82, 37.64]
])
## 허들 종목 통계지표 ##
hurdles = A[:,0] # 모든 행의 0번째 열
print(hurdles)
print(f'평균: {np.mean(hurdles):.3f}')
print(f'분산: {np.var(hurdles, ddof=1):.3f}') # ddof 자유도 값 1 : 불편추정량 (n-1로 구함)
[3.73 3.57 3.22 2.81 2.91 2.67]
평균: 3.152
분산: 0.184
## 공분산 행렬 ##
np.set_printoptions(precision=3, suppress=True)
print('[Covariance Matrix]')
# rowvar : True(기본값)인 경우에는 행이 변수를 나타내며 열은 각 변수의 관측치를 나타낸다, False인 경우에는 각 행이 관측치(선수 한명당 육상 종목별 관측 데이터)를 나타내며 열이 변수(종목)을 나타낸다
B = np.cov(A, rowvar=False)
B
[Covariance Matrix]
array([[ 0.184, 0.007, 0.325, 0.262, 0.151, 0.109, 0.222],
[ 0.007, 0.002, -0.001, 0.014, 0.01 , -0.029, 0.022],
[ 0.325, -0.001, 1.028, 0.388, 0.199, -0.026, -1.06 ],
[ 0.262, 0.014, 0.388, 0.528, 0.244, 0.524, 0.078],
[ 0.151, 0.01 , 0.199, 0.244, 0.148, 0.157, 0.21 ],
[ 0.109, -0.029, -0.026, 0.524, 0.157, 3.884, 0.085],
[ 0.222, 0.022, -1.06 , 0.078, 0.21 , 0.085, 7.871]])
col_mean = np.mean(A, axis=0) # 종목별(컬럼별) 평균
A = A - col_mean # 표준화해줌
cov = (A.T@A) / (len(A)-1)
cov # 위의 값과 동일
array([[ 0.184, 0.007, 0.325, 0.262, 0.151, 0.109, 0.222],
[ 0.007, 0.002, -0.001, 0.014, 0.01 , -0.029, 0.022],
[ 0.325, -0.001, 1.028, 0.388, 0.199, -0.026, -1.06 ],
[ 0.262, 0.014, 0.388, 0.528, 0.244, 0.524, 0.078],
[ 0.151, 0.01 , 0.199, 0.244, 0.148, 0.157, 0.21 ],
[ 0.109, -0.029, -0.026, 0.524, 0.157, 3.884, 0.085],
[ 0.222, 0.022, -1.06 , 0.078, 0.21 , 0.085, 7.871]])
'데이터 분석 > 머신러닝' 카테고리의 다른 글
[ML] 추천 알고리즘 (0) | 2023.11.27 |
---|---|
[ML] 13. 고유값 분해를 통한 PCA (0) | 2023.11.27 |
[ML] 비지도학습 알고리즘 - 주성분 분석(PCA) (0) | 2023.11.24 |
[ML] 11. K-Means Clustering (0) | 2023.11.24 |
[ML] 비지도학습 알고리즘 - 군집분석 (0) | 2023.11.23 |