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
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.
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.
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!