Добавление тем в качестве функции в df - PullRequest
0 голосов
/ 28 июня 2019

Я построил модель 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))
...