Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... ·...

25
SCONE Lab. Seoul University National 기계학습 기초수학 실습 Python이용한 행렬 계산 2018.07.09. 오영준, 강온유

Transcript of Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... ·...

Page 1: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul

University

National

기계학습 기초수학 실습

Python을 이용한 행렬 계산 2018.07.09.

오영준, 강온유

Page 2: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Python

간단하고 배우기 쉬운 프로그래밍 언어 (오픈소스)

기계 학습과 데이터 과학 분야에서 널리 쓰임

Numpy나 SciPy와 같은 수치 계산과 통계 처리를 다루는 탁월한 라이브러리 제공

딥러닝 프레임워크쪽도 Python 애용 (TensorFlow, Caffe..)

Page 3: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Python 설치

Python 3 설치 − https://www.python.org/downloads/release/python-365/

−Windows x86 executable installer

−Add Python 3.6 to PATH" 옵션을 선택

Page 4: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

라이브러리 설치

Numpy 설치 −수치 계산용 라이브러리

−수학 알고리즘과 행렬을 조작하기 위한 편리한 메소드 풍부

−효율적인 딥러닝 구현

−$ pip install numpy

Scipy 설치 −과학기술계산용 함수 및 알고리즘 제공

− scipy.linalg

●선형 대수 Linear algebra routines

−$ pip install scipy

Page 5: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Python 설치

python 설치 확인 −터미널에서 python –version 명령어 실행

−Python이라고 입력하여 파이썬 인터프리터 시작

●인터프리터 : 대화 모드, 대화하듯 프로그래밍

파이썬 기초 실습 준비하기 − Jupyter notebook 실행

Page 6: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Python ndarray와 matrix 구분

Ndarray는 다차원 배열 생성이 가능하지만 matrix는 2차원 배열만 지원

구분 ndarray matrix

차원 다차원 가능 2차원

* 연산자 요소간 곱 행렬곱

numpy.multiply() 요소간 곱 요소간 곱

numpy.dot() 행렬곱 행렬곱

Page 7: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Python 기초 문법 따라 해보기

Page 8: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Python 기초 문법 따라 해보기

Page 9: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

문제

점수의 평균 −학생 A의 과목별 점수는 각각 다음과 같다.

−학생 A 의 평균점수를 구하시오.

나눗셈의 몫 − 17을 3으로 나누었을 때 그 몫을 구하시오.

Page 10: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

벡터

벡터 −정의: 크기와 방향을 갖는 물리적인 양

−표현: 순서를 가지는 수들의 나열

python에서 벡터 기술하기 −행(row) 벡터 & 열(column) 벡터

−각 원소별로 동일한 데이터 타입을 가지고 있음

>>> import numpy as np >>> a1 = np.array([[1, 2, 3]]) # 크기가 (1,3) 인 2차원 배열 (행벡터) >>> a2 = np.array([ [1], [2], [3] ]) # 크기가 (3,1) 인 2차원 배열 (열벡터) >>> a1 >>> a1.shape >>> a2 >>> a2.shape >>> a2.ndim

Page 11: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

벡터

Page 12: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

벡터

행 벡터 열 벡터 변환하기 − Transpose() 함수 사용

●배열의 행과 열을 바꾸는 작업

●단순하게 T를 이용해도 됨

Page 13: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

벡터원소 참조 하기

벡터 Index 접근 표기법 −벡터의 시작 인덱스는 0

−배열명 [행][열]

−배열명 [행, 열]

Page 14: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

벡터

벡터간 연산 − 다음 두 벡터가 있을 때,

−두 벡터의 합과 차

>>> x + y array([[2., 4., 6.]]) >>> x – y array([[-4., -4., -4.]])

>>> x = np.array([[-1.0, 0.0, 1.0]]) >>> y = np.array([[3.0, 4.0, 5.0]])

− 두 벡터의 내적

>>> np.dot(x, y.T) [[2.0]]

Page 15: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

벡터

Page 16: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

벡터

[실습] numpy를 이용한 벡터 연산

𝑣 = 2, 3 , 4 , 𝑤 = 1, 1 , 1 인 벡터를 생각하자.

1. 𝑢 = 2 ∗ 𝑣 + 3 ∗ 𝑤일 때, 벡터 u 를 구해 보시오.

2. 벡터 v 의 크기는 np.linalg.norm(v) 함수와 np.sqrt(np.dot(v,v))를 통해 구할 수 있고, np.sqrt(sum(v* v))로도 구할 수 있다. 세 방법을 사용하여 해당 값이 같게 나타나는지 확인 하시오

3. 위 두 벡터 v,w가 이루는 각 θ의 코사인 값을 구해 보시오. − 참고) 𝑣 ∙ 𝑤 = 𝑣 𝑤 𝑐𝑜𝑠𝜃

Page 17: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Exercise

17

라라랜드 인피니티 워 쥬라기 월드

A 1 4.5 5

B 2 3.5 4

C 4 3 1

D 5 2 1

다음은 유저 A, B, C, D 의 각 영화에 대한 평점을 매긴 표이다. Cosine similarity 를 이용해서 영화 취향이 가장 비슷한 두 사람을 찾으시오.

Page 18: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

행렬 만들기

Python 에서 행렬의 각 행을 []를 통해 나눌 수 있다.

>>> M1=np.array([[1,2,3],[4,5,6]]) M1=array([[1, 2, 3], [4, 5, 6]])

>>> M2= np.array([[1,2],[3,4],[5,6]]) M2 = array([[1, 2], [3, 4], [5, 6]])

>>> M3=np.array([[1,5,7],[2,4,6],[3,8,9]]) M3 = array([[1, 5, 7], [2, 4, 6], [3, 8, 9]])

Page 19: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

행렬의 기본 연산

행렬의 연산은 다음과 같이 수행할 수 있다.

>>> M=np.array([[1,2,3],[4,5,6]]) >>> M2=np.array([[3,3,3],[2,2,2]])

>>> M + M2 array([[4, 5, 6], [6, 7, 8]])

>>> np.dot(M, M2.T) array([[18, 12], [45, 30]])

>>> np.column_stack((M,M2)) (Augmented matrix) array([[1, 2, 3, 3, 3, 3], [4, 5, 6, 2, 2, 2]])

Page 20: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Exercise

[실습] 다음을 수행하시오.

−함수 np.eye(3) 를 이용해서 3*3 크기의 I 행렬 A를 생성한다.

− v=np.array([[3],[4],[5]]) 라는 행렬을 저장하고, Av 와 v’v 를 컴퓨터를 쓰지 않고 계산해 보고 실제 값과 비교하시오. (v’는 v의 transpose)

− v*A를 구하면 어떤 결과가 나타나는가?

20

Page 21: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Exercise

[실습] 행렬 A는 학생 4명의 키와 몸무게를 (feet-inch) 및 pound 로 표현한 것이다. (1 pound는 0.45 kg, 1 feet 는 30 센티미터, 1 인치는 2.5 센티미터)

A=

6 0 170566

1142

180190180

몸무게를 미터법 단위로 변환하고 그 결과를 벡터로 표현하려면?

x

6566

+ 𝑦

01142

+ z

170180190180

x, y, z 는 ?

6 0 170566

1142

180190180

(x, y, z)

21

Page 22: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Exercise

위 행렬에서 키를 미터법으로 변환하려면?

x

6566

+ 𝑦

01142

+ z

170180190180

x, y, z 는 ?

Page 23: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Exercise

학생들의 키와 몸무게를 (동시에) 미터 단위로 변환하시오.

x

6566

+ 𝑦

01142

+ z

170180190180

x, y, z 는 ?

6 0 170566

1142

180190180

(x, y, z)

Page 24: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Exercise

[실습] 다음을 수행하시오.

A=

6 0 170566

1142

180190180

학생들의 체중 평균을 구하시오

미터 단위로 학생들 키의 평균을 구하시오

Page 25: Python을 이용한 행렬 계산incpaper.snu.ac.kr/images/0/02/기계학습_기초수학... · 2018-07-09 · SCONE L ab. S eoul N ational U niversity Python 간단하고 배우기

SCONE Lab.

Seoul National University

Exercise

[실습] 다음과 같은 행렬을 만들고, Ax=b 인지 아닌지를 확인하시오.

25