Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung des Prinzips des t-SNE-Algorithmus und der Python-Code-Implementierung
T-verteilte stochastische Nachbareinbettung (t-SNE) ist ein unbeaufsichtigter Algorithmus für maschinelles Lernen zur Visualisierung, der mithilfe der nichtlinearen Dimensionsreduktionstechnologie versucht, die hochdimensionale Summe basierend auf der Ähnlichkeit von Datenpunkten und Merkmalen zu minimieren zwischen diesen bedingten Wahrscheinlichkeiten (oder Ähnlichkeiten) im niedrigdimensionalen Raum, um die Datenpunkte im niedrigdimensionalen Raum perfekt darzustellen.
Daher ist t-SNE gut darin, hochdimensionale Daten zur Visualisierung in einen niedrigdimensionalen Raum mit zwei oder drei Dimensionen einzubetten. Es ist zu beachten, dass t-SNE eine Heavy-Tailed-Verteilung zur Berechnung der Ähnlichkeit zwischen zwei Punkten in einem niedrigdimensionalen Raum anstelle einer Gaußschen Verteilung verwendet, was zur Lösung von Crowding- und Optimierungsproblemen beiträgt. Und Ausreißer haben keinen Einfluss auf t-SNE.
1. Finden Sie die paarweise Ähnlichkeit zwischen benachbarten Punkten im hochdimensionalen Raum.
2. Ordnen Sie jeden Punkt im hochdimensionalen Raum basierend auf der paarweisen Ähnlichkeit der Punkte im hochdimensionalen Raum einer niedrigdimensionalen Karte zu.
3. Verwenden Sie den Gradientenabstieg basierend auf der Kullback-Leibler-Divergenz (KL-Divergenz), um eine niedrigdimensionale Datendarstellung zu finden, die die Nichtübereinstimmung zwischen bedingten Wahrscheinlichkeitsverteilungen minimiert.
4. Verwenden Sie die Student-t-Verteilung, um die Ähnlichkeit zwischen zwei Punkten im niedrigdimensionalen Raum zu berechnen.
Importmodul
# Importing Necessary Modules. import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.manifold import TSNE from sklearn.preprocessing import StandardScaler
Daten lesen
# Reading the data using pandas df = pd.read_csv('mnist_train.csv') # print first five rows of df print(df.head(4)) # save the labels into a variable l. l = df['label'] # Drop the label feature and store the pixel data in d. d = df.drop("label", axis = 1)
Datenvorverarbeitung
# Data-preprocessing: Standardizing the data from sklearn.preprocessing import StandardScaler standardized_data = StandardScaler().fit_transform(data) print(standardized_data.shape)
Ausgabe
# TSNE # Picking the top 1000 points as TSNE # takes a lot of time for 15K points data_1000 = standardized_data[0:1000, :] labels_1000 = labels[0:1000] model = TSNE(n_components = 2, random_state = 0) # configuring the parameters # the number of components = 2 # default perplexity = 30 # default learning rate = 200 # default Maximum number of iterations # for the optimization = 1000 tsne_data = model.fit_transform(data_1000) # creating a new data frame which # help us in plotting the result data tsne_data = np.vstack((tsne_data.T, labels_1000)).T tsne_df = pd.DataFrame(data = tsne_data, columns =("Dim_1", "Dim_2", "label")) # Plotting the result of tsne sn.FacetGrid(tsne_df, hue ="label", size = 6).map( plt.scatter, 'Dim_1', 'Dim_2').add_legend() plt.show()
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Prinzips des t-SNE-Algorithmus und der Python-Code-Implementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!