머신러닝을 data속의 representation을 기계가 학습을 하는 것
data는 대부분 고차원(high dimensio)이다. 즉, vector와 matrix로 구성되어 있다.\
의료 데이터를 예시로 들어보면,
병원은 환자 A에 대한 정보를 “성별, 나이, 몸무게, 키, 심장질환 유무”로 저장한다고
하자. 그렇다면?
ML 알고리즘은 고차원 데이터의 표현을 학습 목적에 맞게 뽑아내는 함수를 학습한다.
여기 공부할 때 딥러닝 논문 스터디때 내가 얼마나 무지했느냐를... 알게됐다는...부끄러운..순간이었다. 왜 고등학교때 공부한 걸 다 까먹은거지?ㅎ
벡터 함수의 크기(scale) : np.linalg.norm(data)
def main():
data = [1,2,3]
print(calculate_norm(data))
print(unit_vector(data))
#함수 안에 주어진 데이터 data의 크기(scale) 값을 출력하는 함수
def calculate_norm(data):
return np.linalg.norm(data)
#함수 입력으로 주어진 data 벡터를 단위 벡터(unit vector)로 바꾸어 출력
def unit_vector(data):
return np.array(data) / np.linalg.norm(data)
if __name__ == "__main__":
main()
지시사항: 함수 안에서 먼저 (5,5)의 랜덤 행렬을 선언하세요.그리고 선언한 행렬의 최대값과 최소값을 기억하고, 이것을 통해 선언했던 랜덤 행렬을 normalize하세요.
def main():
print(normalize())
def normalize():
Z = np.random.random((5,5))
Zmax, Zmin = Z.max(), Z.min()
Z = (Z-Zmin)/(Zmax-Zmin)
return Z
if __name__ == "__main__":
main()
[지시사항]
함수 안에 먼저 1으로 채워진 행렬 2개를 선언합니다.
하나는 (5,3)의 크기, 다른 하나는 (3,2)로 합니다. 그리고 앞서 선언한 두 행렬의 곱을 합니다.
def main():
print(multiply())
def multiply():
A = np.ones((5,3)) #1의 값으로만 채워진 (5,3)의 행렬 선언
B = np.ones((3,2))
Z = np.dot(A, B) #두 행렬의 곱
return Z
if __name__ == "__main__":
main()