我在python中使用包LDA来分析文档中的主题,当我使用术语频率作为方法的输入时,这没关系 'model.fit()',但总是有错误,说' TypeError:根据规则'无法将数组数据从dtype('float64')转换为dtype('int64')安全 '******',使用Tfidf作为LDA包中方法'model.fix()'的输入。 代码如下:( papers.txt中的每一行都是特定术语,作为每个文档的表示)
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()'只能接收一个整数类型的矩阵,而不是float?我已经检查了包lda(https://pypi.python.org/pypi/lda)的文档,遗憾的是,没有关于详细说明的具体讨论。有没有人遇到过同样的问题?你是如何解决这些问题的?提前谢谢!
答案 0 :(得分:0)
您需要先投射np数组
model.fit(np.asarray(weight))
应该成为model.fit(np.asarray(weight).astype(int))