본문 바로가기
관/핫한 머신러닝 프로젝트

파이썬 모듈을 이용한 머신러닝 공부 03. (scipy 모듈 소개 2/5)

by 4차원 박스 2019. 11. 4.

이번 포스팅은 사이파이 모듈을 본다

 

보기전에 간단한 팁을 정리한다

 

c언어의 scanf 혹은 printf 에서 많이 쓰이는 서식문자가 있다 보통 %d 등으로 정수만 바꿀때

사용하는데 파이썬도 이런것이 존재하며 이를 포매팅이라 한다.

 

c언어와 같은방식으로 사용할 수 있지만

format 함수를 사용하는 방식이 다음 코드에 존재한다

사용되는 방식은 다음과 같다

 

{여기에 옴 } . format( 여기에 옴 )

 

이렇게 사용한다 물론 직접적인 값 대신

변수를 여기에 사용 가능하다.

 

이제 본격적으로 사이파이 모듈을 알아본다.

 

 

2. scipy: 통계등 많은 용도로 사용할 예정임
핵심은 scipy.sparse로 데이터를 표현하는 하나의 방법인 희소 행렬 기능을 제공함.

정확한건 모르겠고 희소행렬은 다음의 예제를 통해 살펴보면 항등행렬로 인식
가능해 보임.


import numpy as np
from scipy import sparse

eye=np.eye(4)
print("Numpy 배열 :\n{}".format(eye))

이 결과
Numpy 배열 :
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
로 등장함

위의 코드에 다음 코드까지 추가하면
sparse_matrix=sparse.csr_matrix(eye)
print("scipy의 csr 행렬: \n{}".format(sparse_matrix))

결과로
scipy의 csr 행렬: 
  (0, 0) 1.0
  (1, 1) 1.0
  (2, 2) 1.0
  (3, 3) 1.0
이와 같이 등장함.

보통 항등행렬을 0으로 모두 채운 2차원 배열로부터 만들지 않으므로(메모리의 부족을 고려함)
행렬의 위치에 1이 들어가게 표기한 형태이다.

마지막으로 이번엔 위와 같은 결과를 다른방식의 표현으로 
coo포맷으로 나타낸다.

import numpy as np
from scipy import sparse

data=np.ones(4)
row_indices=np.arange(4)
col_indices=np.arange(4)
eye_coo=sparse.coo_matrix((data,(row_indices,col_indices)))
print("coo표현 : \n{}".format(eye_coo))

결과로
coo표현 : 
  (0, 0) 1.0
  (1, 1) 1.0
  (2, 2) 1.0
  (3, 3) 1.0
와 같이 표기된다.

이쯤 궁금할 내용을 정리한다.

 

CSR과 COO의 차이는 다음과 같다

COO는 coordinate 포맷의 약자로 데이터가 놓일 행렬의 위치를 별도의 매개변수로 전달한다.

CSR은 compressed row storage의 약자로 행의 인덱스를 압축하여 저장한다.

댓글