J'utilise le code suivant pour faire la modélisation du sujet sur mes documents:distribution de probabilité de sujets utilisant NMF
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
tfidf_vectorizer = TfidfVectorizer(tokenizer=tokenize, max_df=0.85, min_df=3, ngram_range=(1,5))
tfidf = tfidf_vectorizer.fit_transform(docs)
tfidf_feature_names = tfidf_vectorizer.get_feature_names()
from sklearn.decomposition import NMF
no_topics = 50
%time nmf = NMF(n_components=no_topics, random_state=11, init='nndsvd').fit(tfidf)
topic_pr= nmf.transform(tfidf)
Je pensais que topic_pr me donne la distribution de probabilité de sujets différents pour chaque document. En d'autres termes, je m'attendais à ce que les nombres dans la sortie (topic_pr) soient des probabilités que le document de la rangée X appartienne à chacun des 50 sujets du modèle. Mais, les chiffres ne s'ajoutent pas à 1. Est-ce vraiment des probabilités? Si non, y a-t-il un moyen de les convertir en probabilités?
Merci
merci pour l'aide. J'ai essayé 'code' nmf = NMF (n_components = no_topics, random_state = 1, beta_loss = 'kullback-leibler', solveur = 'mu', alpha = .1, l1_ratio = .5) .fit (tfidf) mais toujours les résultats N'ajoute pas 1. Ai-je fait quelque chose de mal? –
Avez-vous essayé d'utiliser les deux dernières lignes de ma réponse à la place de NMF? –