2017-11-16 29 views
0

에서 'model.fit()'메서드의 입력으로 tfidf를 사용하는 중 오류 문서의 항목을 분석하기 위해 Python의 LDA 패키지를 사용했지만 용어 빈도를 메서드 입력으로 사용하면 괜찮습니다. ' 그러나 '타입 오류 :'안전 '에 따라 dtype ('float64 ')에서 dtype ('int64 ')으로 배열 데이터를 캐스트 할 수 없습니다. ***** ', Tfidf를 LDA 패키지의'model.fix() '메소드의 입력으로 사용합니다. 다음과 같이 코드는 다음과 같습니다패키지의 lda

corpus = [] 
for line in open('papers.txt','r').readlines(): 
    corpus.append(line.strip()) 
vectorizer = CountVectorizer() 
#tf-idf 
transformer = TfidfTransformer() 
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus)) 
analyze = vectorizer.build_analyzer() 
weight = tfidf.toarray() 
words = vectorizer.get_feature_names() 
years = getYears() 
#import lda 
model = lda.LDA(n_topics=30,n_iter=500,random_state = 1) 
model.fit(np.asarray(weight)) 
topic_word = model.topic_word_ 
doc_topic = model.doc_topic_ 

단지와 매트릭스를받을 수 패키지 LDA의 방법 'model.fit을() 것 (papers.txt의 모든 라인은 각 문서의 표현으로 특정 용어입니다) float가 아닌 정수의 유형? 나는 패키지 lda (https://pypi.python.org/pypi/lda)의 문서를 확인했지만, 불행히도 detaills에 대한 구체적인 논의는 없습니다. 누구든지 같은 문제를 만났습니까? 이걸 어떻게 고치 죠? 미리 감사드립니다!

model.fit(np.asarray(weight))이가되어야

답변

0

는 먼저 NP 배열을 캐스팅 할 필요가 model.fit(np.asarray(weight).astype(int))

+0

감사합니다, 한 가지 언급해야 TD-IDF는 경우, 일반적으로 덜 내 경우에는 1보다 인 부동 소수점 값 있음 float 값을 정수로 변환하면 프로그램이 작동하지만 많은 0이 있기 때문에 용어 사이의 차이 (가중치)가 무시되므로 LDA 방법이 작동하지 않습니다. 우리는 많은 가중치를 0으로 변환합니다. 나는 lda 패키지가 term frequency와 같은 정수만을 받아 들일 수 있다고 생각하고 있었습니까? –