Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Prinzips des t-SNE-Algorithmus und der Python-Code-Implementierung

Detaillierte Erläuterung des Prinzips des t-SNE-Algorithmus und der Python-Code-Implementierung

WBOY
WBOYnach vorne
2024-01-22 23:48:051455Durchsuche

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.

t-SNE-Algorithmusschritte

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.

Python-Code zur Implementierung von t-SNE im MNIST-Datensatz

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:163.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen