Я построил модель LDA и матрицу term-doc.Теперь я хочу добавить темы в 'df [' topic-description ']'.Я написал функцию для этого, но, кажется, с кодом есть какая-то ошибка.Я посмотрел на stackoverflow, что idxmax не работает с типом объекта, поэтому я изменил dtype на numeric.Я не могу понять проблему здесь.Любая помощь приветствуется
Функция для добавления тем в df
def add_topics_to_df(ldamodel, doc_term_matrix, df, new_col='topics_description', num_topics = 3):
# Convert into Per-document topic probability matrix:
docTopicProbMat = ldamodel[doc_term_matrix]
docTopicProbDf = pd.DataFrame(index=df.index, columns=range(0, num_topics))
for i, doc in enumerate(docTopicProbMat):
for topic in doc:
docTopicProbDf.iloc[i, topic[0]] = topic[1]
docTopicProbDf[new_col] = pd.to_numeric(docTopicProbDf[new_col])
docTopicProbDf[new_col] = docTopicProbDf.idxmax(axis=1)
df_topics = docTopicProbDf[new_col]
# Merge with df
df_new = pd.concat([df, df_topics], axis=1)
return df_new
Вызов функции и дальнейшая обработка
df = add_topics_to_df(ldamodel_description, doc_term_matrix_description, df, new_col='topics_description', num_topics=3)
# Rename based on understanding of topics
df['topics_description'].replace({0:'Location', 1:'Luxury', 2:'Budget'},inplace=True)
df = pd.get_dummies(df, columns=['topics_description'], drop_first=False)
print("Dataset has {} rows, {} columns.".format(*df.shape))