2016-10-17 16 views
0

주제 분석을 수행하기 위해 tf-idf 입력에 대해 NMF 분해를 수행합니다.저장된 W 행렬을 사용하여 분류를위한 행렬 분해 적용

def decomp(tfidfm, topic_count): 
    model = decomposition.NMF(init="nndsvd", n_components=topic_count,  max_iter=500) 
    H = model.fit_transform(tfidfm) 
    W = model.components_ 
    return W, H 

이, 모델 장기 과제에 대한 주제로 구성된 정의 및 H, 문서 주제에 할당 매트릭스

지금까지 너무 좋아, 내가 문서를 분류하는 H를 사용할 수 있습니다 W 반환 용어 빈도를 통한 관련성을 토대로 용어 목록과의 연관성을 토대로합니다.

나는 내가 나중에 다시 적용 할 수 있습니다 디스크에 주제 기간-연결을 저장하려는

- 그리고 여기에 설명 된 방법을 채택은 [https://stackoverflow.com/questions/8955448] 그래서 무엇을

W.

의 스파 스 매트릭스 reperesentation를 저장 지금하고 싶은 것은 주제 정의 행렬 W 만 고정하는 동일한 프로세스를 수행하는 것입니다.

설명서에서 호출 매개 변수에 W를 다음과 같이 행을 설정할 수있는 것으로 보입니다.

def applyModel(tfidfm,W,topic_count): 
    model = decomposition.NMF(init="nndsvd", n_components=topic_count, max_iter=500) 
    H = model.fit_transform(X=tfidfm, W=W) 
    W = model.components_ 
    return W, H 

그리고 시도해 보았습니다. 하지만 작동하지 않는 것 같습니다.

다른 크기의 어휘를 사용하여 W 행렬을 컴파일 한 다음 applyModel 함수에 입력하여 테스트 한 결과 행렬의 모양을 정의해야합니다 (또는 내가 말하고자하는 것은 그것이 내가 의도 한 것입니다) W 모델에 의해, 그러나 이것은 사실이 아닙니다.

이 질문의 간단한 버전은 다음과 같습니다. 행렬 분해에서 생성 된 주제 모델을 저장하여 원래 생성했던 것과 다른 문서 세트를 분류하는 데 사용할 수있는 방법은 무엇입니까? W V 및 주어진

다른 측면에서

, V = WH 있다면, 어떻게 돌아갈 수 H?

답변

1

초기 방정식은 initial equation이며 H과 같이 How to solve it for H으로 해결합니다.

여기서 inverse of WW이 비정규 인 경우에만 존재하는 W 행렬의 역함을 나타냅니다.

항상 곱셈 순서가 중요합니다. if the order is changed이있는 경우 의 역수를 의 역수로 곱하면됩니다. 반대쪽은 no description입니다.

+0

물론! 수학은 다시 이깁니다. 행렬 곱셈/역행렬을 수행하여 H를 얻는 해답을 게시 할 것입니다. 적용 할 애플리케이션에 대해 의미있는 결과를 얻는 것처럼 보입니다. 나는 곧 답을 표시 하겠지만 추가 답변을 요청하기 위해 열어두고 싶습니다 - 나는 scikit으로 구운 것을 기대하고 이미 뭔가가 있다면 프로세스를 복제하고 싶지 않습니다. –

0

완전성을 보려면 여기를 고려 ForceBru에서 답을 걸리는 다시 applyModel 함수의

def applyModel(tfidfm,W): 
    H = tfidfm * linalg.inv(W) 
    return H 

(정렬 된 어휘 가정)이 반환 주제 H에 문서의 매핑 (AN scipy.sparse.linalg의 수입을 사용) 사전 생성 된 주제 - 모델 W 및 문서 기능 매트릭스 V을 tfidf에서 생성했습니다.