Maison  >  Article  >  développement back-end  >  Explication détaillée du principe de l'algorithme t-SNE et de l'implémentation du code Python

Explication détaillée du principe de l'algorithme t-SNE et de l'implémentation du code Python

WBOY
WBOYavant
2024-01-22 23:48:051458parcourir

Explication détaillée du principe de lalgorithme t-SNE et de limplémentation du code Python

L'intégration de voisins stochastiques distribués en T (t-SNE) est un algorithme d'apprentissage automatique non supervisé pour la visualisation qui utilise la technologie de réduction de dimensionnalité non linéaire pour tenter de minimiser la somme de grande dimension en fonction de la similarité des points de données et des caractéristiques. entre ces probabilités conditionnelles (ou similitudes) dans un espace de faible dimension pour représenter parfaitement les points de données dans un espace de faible dimension.

Par conséquent, le t-SNE est efficace pour intégrer des données de haute dimension dans un espace de basse dimension en deux ou trois dimensions à des fins de visualisation. Il convient de noter que t-SNE utilise une distribution à queue lourde pour calculer la similarité entre deux points dans un espace de faible dimension au lieu d'une distribution gaussienne, ce qui aide à résoudre les problèmes d'encombrement et d'optimisation. Et les valeurs aberrantes n’affectent pas le t-SNE.

Étapes de l'algorithme t-SNE

1. Trouvez la similitude par paire entre des points adjacents dans un espace de grande dimension.

2. Sur la base de la similarité par paire des points dans l'espace de grande dimension, mappez chaque point de l'espace de grande dimension sur une carte de basse dimension.

3. Utilisez la descente de gradient basée sur la divergence Kullback-Leibler (divergence KL) pour trouver une représentation de données de faible dimension qui minimise l'inadéquation entre les distributions de probabilité conditionnelles.

4. Utilisez la distribution Student-t pour calculer la similarité entre deux points dans un espace de faible dimension.

Code Python pour implémenter t-SNE sur l'ensemble de données MNIST

Module d'importation

# 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

Lire les données

# 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)

Prétraitement des données

# Data-preprocessing: Standardizing the data
from sklearn.preprocessing import StandardScaler

standardized_data = StandardScaler().fit_transform(data)
print(standardized_data.shape)

Sortie

# 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()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer