반응형
5 | 7 | ||||
1 | 4 | 2 | 3 | 6 | |
2 | 1 | ||||
6 | |||||
4 | 5 | ||||
7 |
희소행렬: 대부분의 값이 0.
이런 희소행렬을 메모리 낭비가 적도록 변환하고자 한다! → CSR 형식을 사용!
▶ 필요한 패키지 불러오기
from scipy.sparse import csr_matrix
import numpy as np
▶ 0이 아닌 데이터 추출
data = np.array([5,7,1,4,2,3,6,2,1,6,4,5,7])
첫번째 행부터 왼쪽에서 오른쪽으로 순서대로 0이 아닌 값을 리스트에 넣는다.
▶ 열 위치
col_pos = np.array([2,5,0,1,3,4,5,1,3,0,3,5,0])
첫번째 행부터 왼쪽에서 오른쪽으로 순서대로 0이 아닌 값의 열 위치를 리스트에 넣는다.
(열 번호는 0번부터 시작)
▶ 행 위치 값에 대해 고유한 값의 시작 위치
row_pos_ind = np.array([0,2,7,9,10,12,13])
숫자의 의미를 이해해보자!
처음에는 0을 넣는다.
0행에 0이 아닌 값 2개니까 +2 -> 2
1행에 0이 아닌 값 5개니까 +5 -> 7
2행에 0이 아닌 값 2개니까 +2 -> 9
3행에 0이 아닌 값 1개니까 +1 -> 10
4행에 0이 아닌 값 2개니까 +2 -> 12
5행에 0이 아닌 값 1개니까 +1 -> 13
▶ 변환!
csr = sparse.csr_matrix((data2, col_pos, row_pos_ind))
csr.toarray()로 내용을 확인하면 원래 희소행렬과 같은 값을 확인할 수 있다.
▶ 실제로 사용할 때
data : 희소행렬
csr = sparse.csr_matrix(data)
반응형
'Data Science : Study > 1. Python' 카테고리의 다른 글
하이퍼파라미터 튜닝 : Coarse & Fine Search (0) | 2020.12.08 |
---|---|
모델 : LightGBM (1) | 2020.11.16 |
Python : (pandas) One- hot encoding (0) | 2020.05.29 |
Python : 데이터분석 - 모델 평가 (0) | 2020.05.25 |
Python : 데이터분석 - 모델 생성 및 예측 (0) | 2020.05.25 |