TSNE#

class sklearn.manifold.TSNE(n_components=2, *, perplexity=30.0, early_exaggeration=12.0, learning_rate='auto', max_iter=1000, n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', metric_params=None, init='pca', verbose=0, random_state=None, method='barnes_hut', angle=0.5, n_jobs=None)[Quelle]#

T-distributed Stochastic Neighbor Embedding.

t-SNE [1] ist ein Werkzeug zur Visualisierung hochdimensionaler Daten. Es wandelt Ähnlichkeiten zwischen Datenpunkten in gemeinsame Wahrscheinlichkeiten um und versucht, die Kullback-Leibler-Divergenz zwischen den gemeinsamen Wahrscheinlichkeiten der niedrigdimensionalen Einbettung und den hochdimensionalen Daten zu minimieren. t-SNE hat eine nicht-konvexe Kostenfunktion, d.h. mit unterschiedlichen Initialisierungen können unterschiedliche Ergebnisse erzielt werden.

Es wird dringend empfohlen, eine andere Methode zur Dimensionsreduktion zu verwenden (z.B. PCA für dichte Daten oder TruncatedSVD für spärliche Daten), um die Anzahl der Dimensionen auf einen vernünftigen Wert (z.B. 50) zu reduzieren, wenn die Anzahl der Merkmale sehr hoch ist. Dies unterdrückt einige Rauschen und beschleunigt die Berechnung der paarweisen Distanzen zwischen den Stichproben. Weitere Tipps finden Sie in den FAQs von Laurens van der Maaten [2].

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
n_componentsint, Standard=2

Dimension des eingebetteten Raums.

perplexityfloat, default=30.0

Die Perplexität hängt mit der Anzahl der nächsten Nachbarn zusammen, die in anderen Manifold-Lernalgorithmen verwendet werden. Größere Datensätze erfordern normalerweise eine größere Perplexität. Ziehen Sie einen Wert zwischen 5 und 50 in Betracht. Unterschiedliche Werte können zu signifikant unterschiedlichen Ergebnissen führen. Die Perplexität muss kleiner sein als die Anzahl der Stichproben.

early_exaggerationfloat, default=12.0

Steuert, wie eng natürliche Cluster im ursprünglichen Raum im eingebetteten Raum sind und wie viel Platz zwischen ihnen verbleibt. Bei größeren Werten wird der Abstand zwischen natürlichen Clustern im eingebetteten Raum größer. Auch hier ist die Wahl dieses Parameters nicht sehr kritisch. Wenn die Kostenfunktion während der anfänglichen Optimierung ansteigt, sind der Early-Exaggeration-Faktor oder die Lernrate möglicherweise zu hoch.

learning_ratefloat oder „auto“, default=„auto“

Die Lernrate für t-SNE liegt normalerweise im Bereich [10.0, 1000.0]. Wenn die Lernrate zu hoch ist, können die Daten wie ein „Ball“ aussehen, bei dem jeder Punkt ungefähr gleich weit von seinen nächsten Nachbarn entfernt ist. Wenn die Lernrate zu niedrig ist, können die meisten Punkte als dichte Wolke mit wenigen Ausreißern komprimiert erscheinen. Wenn die Kostenfunktion in einem schlechten lokalen Minimum stecken bleibt, kann die Erhöhung der Lernrate helfen. Beachten Sie, dass viele andere t-SNE-Implementierungen (bhtsne, FIt-SNE, openTSNE usw.) eine Definition von learning_rate verwenden, die 4-mal kleiner ist als unsere. Daher entspricht unser learning_rate=200 einem learning_rate=800 in diesen anderen Implementierungen. Die Option „auto“ setzt die learning_rate auf max(N / early_exaggeration / 4, 50), wobei N die Stichprobengröße ist, gemäß [4] und [5].

Geändert in Version 1.2: Der Standardwert wurde auf "auto" geändert.

max_iterint, default=1000

Maximale Anzahl von Iterationen für die Optimierung. Sollte mindestens 250 betragen.

Geändert in Version 1.5: Parametername von n_iter in max_iter geändert.

n_iter_without_progressint, default=300

Maximale Anzahl von Iterationen ohne Fortschritt, bevor die Optimierung abgebrochen wird. Wird nach 250 anfänglichen Iterationen mit Early Exaggeration verwendet. Beachten Sie, dass der Fortschritt nur alle 50 Iterationen überprüft wird, daher wird dieser Wert auf das nächste Vielfache von 50 aufgerundet.

Hinzugefügt in Version 0.17: Parameter n_iter_without_progress zur Steuerung der Abbruchkriterien.

min_grad_normfloat, default=1e-7

Wenn die Gradientennorm unter diesem Schwellenwert liegt, wird die Optimierung gestoppt.

metricstr oder callable, Standard=’euclidean’

Die Metrik zur Berechnung der Distanz zwischen Instanzen in einem Feature-Array. Wenn metric eine Zeichenkette ist, muss sie eine der Optionen sein, die von scipy.spatial.distance.pdist für seinen metric-Parameter zulässig sind, oder eine Metrik, die in pairwise.PAIRWISE_DISTANCE_FUNCTIONS aufgeführt ist. Wenn metric „precomputed“ ist, wird X als Distanzmatrix angenommen. Alternativ, wenn metric eine aufrufbare Funktion ist, wird sie für jedes Paar von Instanzen (Zeilen) aufgerufen und der resultierende Wert aufgezeichnet. Die aufrufbare Funktion sollte zwei Arrays aus X als Eingabe erhalten und einen Wert zurückgeben, der die Distanz zwischen ihnen angibt. Der Standardwert ist „euclidean“, der als quadrierte Euklidische Distanz interpretiert wird.

metric_paramsdict, Standard=None

Zusätzliche Schlüsselwortargumente für die Metrikfunktion.

Hinzugefügt in Version 1.1.

init{„random“, „pca“} oder ndarray der Form (n_samples, n_components), default=„pca“

Initialisierung der Einbettung. PCA-Initialisierung kann nicht mit vorab berechneten Distanzen verwendet werden und ist im Allgemeinen global stabiler als zufällige Initialisierung.

Geändert in Version 1.2: Der Standardwert wurde auf "pca" geändert.

verboseint, default=0

Verbositätsstufe.

random_stateint, RandomState-Instanz oder None, default=None

Bestimmt den Zufallszahlengenerator. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Beachten Sie, dass unterschiedliche Initialisierungen zu unterschiedlichen lokalen Minima der Kostenfunktion führen können. Siehe Glossar.

method{‚barnes_hut‘, ‚exact‘}, default=‚barnes_hut‘

Standardmäßig verwendet der Algorithmus zur Gradientenberechnung die Barnes-Hut-Approximation, die in O(NlogN) Zeit läuft. method=’exact’ führt den langsameren, aber exakten Algorithmus in O(N^2) Zeit aus. Der exakte Algorithmus sollte verwendet werden, wenn die Fehler bei der Nachbarsuche geringer als 3% sein müssen. Die exakte Methode kann jedoch nicht auf Millionen von Beispielen skaliert werden.

Hinzugefügt in Version 0.17: Approximative Optimierungsmethode method über Barnes-Hut.

anglefloat, default=0.5

Wird nur verwendet, wenn method=’barnes_hut’. Dies ist der Kompromiss zwischen Geschwindigkeit und Genauigkeit für Barnes-Hut T-SNE. ‚angle‘ ist die Winkeldimension (in [3] als theta bezeichnet) eines entfernten Knotens, gemessen von einem Punkt aus. Wenn diese Größe unter ‚angle‘ liegt, wird sie als zusammenfassender Knoten für alle darin enthaltenen Punkte verwendet. Diese Methode ist in Bezug auf Änderungen dieses Parameters im Bereich von 0,2 - 0,8 nicht sehr empfindlich. Ein Winkel kleiner als 0,2 führt zu schnell steigenden Rechenzeiten und ein Winkel größer als 0,8 zu schnell steigenden Fehlern.

n_jobsint, default=None

Die Anzahl der parallelen Jobs, die für die Nachbarsuche ausgeführt werden. Dieser Parameter hat keine Auswirkungen, wenn metric="precomputed" oder (metric="euclidean" und method="exact"). None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

Hinzugefügt in Version 0.22.

Attribute:
embedding_array-like der Form (n_samples, n_components)

Speichert die Einbettungsvektoren.

kl_divergence_float

Kullback-Leibler-Divergenz nach der Optimierung.

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.

learning_rate_float

Effektive Lernrate.

Hinzugefügt in Version 1.2.

n_iter_int

Anzahl der durchgeführten Iterationen.

Siehe auch

sklearn.decomposition.PCA

Hauptkomponentenanalyse, eine lineare Dimensionsreduktionsmethode.

sklearn.decomposition.KernelPCA

Nichtlineare Dimensionsreduktion unter Verwendung von Kernels und PCA.

MDS

Manifold-Lernen mit multidimensionaler Skalierung.

Isomap

Manifold-Lernen basierend auf Isometric Mapping.

LocallyLinearEmbedding

Mannigfaltigkeitslernen mit Locally Linear Embedding.

SpectralEmbedding

Spektrale Einbettung für nichtlineare Dimension.

Anmerkungen

Ein Beispiel für die Verwendung von TSNE in Kombination mit KNeighborsTransformer finden Sie unter Approximierte Nachbarn in TSNE.

Referenzen

[1] van der Maaten, L.J.P.; Hinton, G.E. Visualizing High-Dimensional Data

Using t-SNE. Journal of Machine Learning Research 9:2579-2605, 2008.

[2] van der Maaten, L.J.P. t-Distributed Stochastic Neighbor Embedding

https://lvdmaaten.github.io/tsne/

[3] L.J.P. van der Maaten. Accelerating t-SNE using Tree-Based Algorithms.

Journal of Machine Learning Research 15(Oct):3221-3245, 2014. https://lvdmaaten.github.io/publications/papers/JMLR_2014.pdf

[4] Belkina, A. C., Ciccolella, C. O., Anno, R., Halpert, R., Spidlen, J.,

& Snyder-Cappione, J. E. (2019). Automated optimized parameters for T-distributed stochastic neighbor embedding improve visualization and analysis of large datasets. Nature Communications, 10(1), 1-12.

[5] Kobak, D., & Berens, P. (2019). The art of using t-SNE for single-cell

transcriptomics. Nature Communications, 10(1), 1-14.

Beispiele

>>> import numpy as np
>>> from sklearn.manifold import TSNE
>>> X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
>>> X_embedded = TSNE(n_components=2, learning_rate='auto',
...                   init='random', perplexity=3).fit_transform(X)
>>> X_embedded.shape
(4, 2)
fit(X, y=None)[Quelle]#

X in einen eingebetteten Raum anpassen.

Parameter:
X{array-artig, spärs matrix} der Form (n_samples, n_features) oder (n_samples, n_samples)

Wenn die Metrik ‚precomputed‘ ist, muss X eine quadratische Distanzmatrix sein. Andernfalls enthält sie eine Stichprobe pro Zeile. Wenn die Methode ‚exact‘ ist, kann X eine spärliche Matrix vom Typ ‚csr‘, ‚csc‘ oder ‚coo‘ sein. Wenn die Methode ‚barnes_hut‘ ist und die Metrik ‚precomputed‘ ist, kann X ein vorab berechneter spärlicher Graph sein.

yNone

Ignoriert.

Gibt zurück:
selfobject

Angepasster Schätzer.

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

X in einen eingebetteten Raum anpassen und diese transformierte Ausgabe zurückgeben.

Parameter:
X{array-artig, spärs matrix} der Form (n_samples, n_features) oder (n_samples, n_samples)

Wenn die Metrik ‚precomputed‘ ist, muss X eine quadratische Distanzmatrix sein. Andernfalls enthält sie eine Stichprobe pro Zeile. Wenn die Methode ‚exact‘ ist, kann X eine spärliche Matrix vom Typ ‚csr‘, ‚csc‘ oder ‚coo‘ sein. Wenn die Methode ‚barnes_hut‘ ist und die Metrik ‚precomputed‘ ist, kann X ein vorab berechneter spärlicher Graph sein.

yNone

Ignoriert.

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

Einbettung der Trainingsdaten in niedrigdimensionalen Raum.

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.

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.