LatentDirichletAllocation#

class sklearn.decomposition.LatentDirichletAllocation(n_components=10, *, doc_topic_prior=None, topic_word_prior=None, learning_method='batch', learning_decay=0.7, learning_offset=10.0, max_iter=10, batch_size=128, evaluate_every=-1, total_samples=1000000.0, perp_tol=0.1, mean_change_tol=0.001, max_doc_update_iter=100, n_jobs=None, verbose=0, random_state=None)[Quelle]#

Latent Dirichlet Allocation mit Online-Variational-Bayes-Algorithmus.

Die Implementierung basiert auf [1] und [2].

Hinzugefügt in Version 0.17.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
n_componentsint, default=10

Anzahl der Themen.

Geändert in Version 0.19: n_topics wurde in n_components umbenannt

doc_topic_priorfloat, default=None

Prior der Dokumenten-Themen-Verteilung theta. Wenn der Wert None ist, wird standardmäßig 1 / n_components verwendet. In [1] wird dies alpha genannt.

topic_word_priorfloat, default=None

Prior der Themen-Wort-Verteilung beta. Wenn der Wert None ist, wird standardmäßig 1 / n_components verwendet. In [1] wird dies eta genannt.

learning_method{‘batch’, ‘online’}, default=’batch’

Methode zur Aktualisierung von _component. Wird nur in der fit-Methode verwendet. Im Allgemeinen ist bei großen Datenmengen die Online-Aktualisierung viel schneller als die Batch-Aktualisierung.

Gültige Optionen

  • ‘batch’: Batch-Variational-Bayes-Methode. Verwendet alle Trainingsdaten bei jeder EM-Aktualisierung. Alte components_ werden in jeder Iteration überschrieben.

  • ‘online’: Online-Variational-Bayes-Methode. Bei jeder EM-Aktualisierung wird eine Mini-Charge von Trainingsdaten verwendet, um die Variable components_ inkrementell zu aktualisieren. Die Lernrate wird durch die Parameter learning_decay und learning_offset gesteuert.

Geändert in Version 0.20: Die Standardlernmethode ist nun "batch".

learning_decayfloat, default=0.7

Dies ist ein Parameter, der die Lernrate in der Online-Lernmethode steuert. Der Wert sollte zwischen (0,5, 1,0] liegen, um eine asymptotische Konvergenz zu gewährleisten. Wenn der Wert 0,0 ist und batch_size gleich n_samples ist, ist die Aktualisierungsmethode dieselbe wie beim Batch-Lernen. In der Literatur wird dies als kappa bezeichnet.

learning_offsetfloat, default=10.0

Ein (positiver) Parameter, der frühe Iterationen im Online-Lernen herunterstuft. Er sollte größer als 1,0 sein. In der Literatur wird dies als tau_0 bezeichnet.

max_iterint, default=10

Die maximale Anzahl von Durchläufen über die Trainingsdaten (auch Epochen genannt). Beeinflusst nur das Verhalten in der fit-Methode, nicht in der partial_fit-Methode.

batch_sizeint, default=128

Anzahl der Dokumente, die in jeder EM-Iteration verwendet werden. Nur im Online-Lernen verwendet.

evaluate_everyint, default=-1

Wie oft die Perplexität ausgewertet werden soll. Nur in der fit-Methode verwendet. Setzen Sie ihn auf 0 oder eine negative Zahl, um die Perplexität während des Trainings überhaupt nicht auszuwerten. Die Auswertung der Perplexität kann Ihnen helfen, die Konvergenz im Trainingsprozess zu überprüfen, erhöht aber auch die gesamte Trainingszeit. Die Auswertung der Perplexität in jeder Iteration kann die Trainingszeit bis zum Zweifachen erhöhen.

total_samplesint, default=1e6

Gesamtzahl der Dokumente. Wird nur in der partial_fit-Methode verwendet.

perp_tolfloat, default=1e-1

Perplexitätstoleranz. Nur verwendet, wenn evaluate_every größer als 0 ist.

mean_change_tolfloat, default=1e-3

Stopptoleranz für die Aktualisierung der Dokumenten-Themen-Verteilung im E-Schritt.

max_doc_update_iterint, default=100

Maximale Anzahl von Iterationen zur Aktualisierung der Dokumenten-Themen-Verteilung im E-Schritt.

n_jobsint, default=None

Die Anzahl der Jobs, die im E-Schritt verwendet werden sollen. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet die Verwendung aller Prozessoren. Weitere Informationen finden Sie im Glossar.

verboseint, default=0

Verbositätsstufe.

random_stateint, RandomState-Instanz oder None, default=None

Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.

Attribute:
components_ndarray der Form (n_components, n_features)

Variationale Parameter für die Themen-Wort-Verteilung. Da die vollständige Bedingung für die Themen-Wort-Verteilung eine Dirichlet-Verteilung ist, kann components_[i, j] als Pseudocount betrachtet werden, der die Anzahl der Male darstellt, bei denen das Wort j Thema i zugeordnet wurde. Es kann auch als Verteilung über die Wörter für jedes Thema nach Normalisierung betrachtet werden: model.components_ / model.components_.sum(axis=1)[:, np.newaxis].

exp_dirichlet_component_ndarray der Form (n_components, n_features)

Exponentieller Wert der Erwartung der logarithmischen Themen-Wort-Verteilung. In der Literatur ist dies exp(E[log(beta)]).

n_batch_iter_int

Anzahl der Iterationen des EM-Schritts.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

n_iter_int

Anzahl der Durchläufe über den Datensatz.

bound_float

Endgültiger Perplexitätswert im Trainingsdatensatz.

doc_topic_prior_float

Prior der Dokumenten-Themen-Verteilung theta. Wenn der Wert None ist, ist er 1 / n_components.

random_state_RandomState-Instanz

RandomState-Instanz, die entweder aus einem Seed, dem Zufallszahlengenerator oder np.random generiert wurde.

topic_word_prior_float

Prior der Themen-Wort-Verteilung beta. Wenn der Wert None ist, ist er 1 / n_components.

Siehe auch

sklearn.discriminant_analysis.LinearDiscriminantAnalysis

Ein Klassifikator mit einer linearen Entscheidungsgrenze, der durch Anpassung klassenbedingter Dichten an die Daten und Anwendung der Bayes-Regel generiert wird.

Referenzen

[1] (1,2,3)

„Online Learning for Latent Dirichlet Allocation“, Matthew D. Hoffman, David M. Blei, Francis Bach, 2010. blei-lab/onlineldavb

[2]

„Stochastic Variational Inference“, Matthew D. Hoffman, David M. Blei, Chong Wang, John Paisley, 2013. https://jmlr.org/papers/volume14/hoffman13a/hoffman13a.pdf

Beispiele

>>> from sklearn.decomposition import LatentDirichletAllocation
>>> from sklearn.datasets import make_multilabel_classification
>>> # This produces a feature matrix of token counts, similar to what
>>> # CountVectorizer would produce on text.
>>> X, _ = make_multilabel_classification(random_state=0)
>>> lda = LatentDirichletAllocation(n_components=5,
...     random_state=0)
>>> lda.fit(X)
LatentDirichletAllocation(...)
>>> # get topics for some given samples:
>>> lda.transform(X[-2:])
array([[0.00360392, 0.25499205, 0.0036211 , 0.64236448, 0.09541846],
       [0.15297572, 0.00362644, 0.44412786, 0.39568399, 0.003586  ]])
fit(X, y=None)[Quelle]#

Lernen Sie ein Modell für die Daten X mit der Methode der Variations-Bayes.

Wenn learning_method ‚online‘ ist, wird die Mini-Batch-Aktualisierung verwendet. Andernfalls wird die Batch-Aktualisierung verwendet.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Dokumenten-Wort-Matrix.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
self

Angepasster Schätzer.

fit_transform(X, y=None, *, normalize=True)[Quelle]#

An Daten anpassen, dann transformieren.

Passt den Transformer an X und y an und gibt eine transformierte Version von X zurück.

Parameter:
Xarray-like der Form (n_samples, n_features)

Eingabestichproben.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None

Zielwerte (None für unüberwachte Transformationen).

normalizebool, default=True

Ob die Dokumenten-Themen-Verteilung in transform normalisiert werden soll.

Gibt zurück:
X_newndarray-Array der Form (n_samples, n_components)

Transformiertes Array.

get_feature_names_out(input_features=None)[Quelle]#

Holt die Ausgabemerkmale für die Transformation.

Die Feature-Namen werden mit dem kleingeschriebenen Klassennamen präfixiert. Wenn der Transformer z.B. 3 Features ausgibt, dann sind die Feature-Namen: ["klassenname0", "klassenname1", "klassenname2"].

Parameter:
input_featuresarray-like von str oder None, default=None

Wird nur verwendet, um die Feature-Namen mit den in fit gesehenen Namen zu validieren.

Gibt zurück:
feature_names_outndarray von str-Objekten

Transformierte Merkmalnamen.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

partial_fit(X, y=None)[Quelle]#

Online VB mit Mini-Batch-Aktualisierung.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Dokumenten-Wort-Matrix.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
self

Teilweise angepasster Schätzer.

perplexity(X, sub_sampling=False)[Quelle]#

Berechnet die ungefähre Perplexität für die Daten X.

Perplexität ist definiert als exp(-1. * Log-Likelihood pro Wort)

Geändert in Version 0.19: Das Argument doc_topic_distr wurde veraltet und wird ignoriert, da der Benutzer keinen Zugriff mehr auf die unnormalisierte Verteilung hat

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Dokumenten-Wort-Matrix.

sub_samplingbool

Sub-Sampling durchführen oder nicht.

Gibt zurück:
scorefloat

Perplexitätswert.

score(X, y=None)[Quelle]#

Berechnet die ungefähre Log-Likelihood als Score.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Dokumenten-Wort-Matrix.

yIgnoriert

Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.

Gibt zurück:
scorefloat

Verwendet die ungefähre Schranke als Score.

set_output(*, transform=None)[Quelle]#

Ausgabecontainer festlegen.

Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.

Parameter:
transform{“default”, “pandas”, “polars”}, default=None

Konfiguriert die Ausgabe von transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: Die Transformationskonfiguration bleibt unverändert

Hinzugefügt in Version 1.4: Die Option "polars" wurde hinzugefügt.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_transform_request(*, normalize: bool | None | str = '$UNCHANGED$') LatentDirichletAllocation[Quelle]#

Konfiguriert, ob Metadaten für die transform-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an transform weitergegeben. Die Anforderung wird ignoriert, wenn keine Metadaten bereitgestellt werden.

  • False: Metadaten werden nicht angefordert und die Meta-Schätzung übergibt sie nicht an transform.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
normalizestr, True, False, oder None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter normalize in transform.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

transform(X, *, normalize=True)[Quelle]#

Transformieren Sie die Daten X gemäß dem angepassten Modell.

Geändert in Version 0.18: doc_topic_distr wird nun normalisiert.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Dokumenten-Wort-Matrix.

normalizebool, default=True

Ob die Dokumenten-Themen-Verteilung normalisiert werden soll.

Gibt zurück:
doc_topic_distrndarray der Form (n_samples, n_components)

Dokumenten-Themen-Verteilung für X.