2012-12-06 2 views
5

현재 텍스트를 분류하려고합니다. 데이터 세트가 너무 크고 here으로 제안되었으므로 스파 스 매트릭스를 사용해야합니다. 내 질문은 지금, 스파 스 매트릭스에 요소를 추가하는 올바른 방법은 무엇입니까? 예를 들어, 행렬 X가 제 입력이라고 가정 해 봅시다.SciPy NumPy 및 SciKit 배우고 희소 행렬을 만듭니다.

X = np.random.randint(2, size=(6, 100)) 

이 매트릭스 X는 ndarray (또는 이와 비슷한 것)의 ndarray처럼 보입니다. 내가

X2 = csr_matrix(X) 

내가 스파 스 매트릭스를 수행하지만 어떻게 내가으로 sparce 행렬에 다른 요소를 추가 할 수 있습니다

? 예를 들어이 고밀도 요소 : [1,0001110, ..., 0,1,0]을 스파 스 벡터에 넣으면 스파 스 입력 행렬에 어떻게 추가합니까?

당신이 정말로 가 시도하기 전에 읽어야 할 좋은 자습서, Scikit는 배우기

+2

당신은 정말로 이것을 읽어야합니다 : http://scikit-learn.org/dev/auto_examples/dvument_classification_20newsgroups.html – zenpoy

+0

이것은 두 번째 날이 파이썬으로 작업하는 두 번째 날입니다. 나는 그것도 발견했다 btw – Ojtwist

+2

어떤 것은 단순히 그들의 시간을 가져 간다. 어쩌면 Python, Numpy 및 Scipy에 대한 자습서를 작성하는 데 시간을 투자해야합니다. 예를 들어, 다른 질문의 대답에서 나는 몇 가지 링크를 지적했고, 젠포는 또 다른 질문을했습니다. 나는 당신이 그 링크를 읽지 않았다고 가정합니다. 다른 질문에 답한 후 몇분 만이 질문을 게시했기 때문입니다. – HerrKaputt

답변

14

은 훌륭한 문서를 가지고 (BTW, 나는 scikit 파이썬, scipy, NumPy와, ... 모든 것을 아주 새로운 해요) 직접 발명하십시오. This 하나는 텍스트를 분류하는 방법을 단계별로 설명하는 첫 번째 읽기입니다.

희박한 표현에 대해 언급하는 부분에 특히주의하십시오 (this 섹션). 일반적으로 svm을 선형 커널과 함께 사용하고 많은 양의 데이터를 사용하려면 LinearSVC (Liblinear를 기반으로 함)가 더 좋습니다.

질문에 관해서 - 나는 두 가지 희소 행렬을 연결하는 여러 가지 방법이 있다고 확신합니다. (다른 방법으로 Google에서 찾아야 할 것입니다.) 여기에 하나 있지만, csr_matrix에서 Is there an efficient way of concatenating scipy.sparse matrices?의 다른 유형 인 coo_matrix으로 변환하십시오.

EDIT : 개의 매트릭스 (또는 매트릭스 및 1 dimenesional 행렬 배열) 일반 아이디어 X1.dataX2.data을 연결하고있는 경우 그들의 indicesindptr들 (또는 rowcol을 조작하는 것이다 연접 coo_matrix) 올바른 위치를 가리 키도록하십시오. 일부 희소 표현은 특정 작업에 더 좋고 다른 작업에는 더 복잡하기 때문에 csr_matrix에 대해 읽고 이것이 최상의 표현인지 확인해야합니다. 하지만 위의 게시자 가이드에서 시작하시는 것이 좋습니다.

+1

SVM을 * 정말 * 큰 데이터 세트에 맞추려면'SGDClassifier'가 더 좋습니다. 기본 설정에서는 선형 SVM에 가깝습니다. –