什么是t-SNE?
t-SNE的主要用途是可视化和探索高维数据。 它由Laurens van der Maatens和Geoffrey Hinton在JMLR第九卷(2008年)中开发并出版。 t-SNE的主要目标是将多维数据集转换为低维数据集。 相对于其他的降维算法,对于数据可视化而言t-SNE的效果最好。 如果我们将t-SNE应用于n维数据,它将智能地将n维数据映射到3d甚至2d数据,并且原始数据的相对相似性非常好。与PCA一样,t-SNE不是线性降维技术,它遵循非线性,这是它可以捕获高维数据的复杂流形结构的主要原因。
import matplotlib.pyplot as plt
import pandas as pd
import torch
from sklearn import manifold
from sklearn import datasets
import numpy as np
import seaborn as sns
data = datasets.load_iris()
iris = datasets.load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names
tsne = manifold.TSNE(n_components=2, random_state=0)
X_tsne = tsne.fit_transform(X)
X_tsne_data = np.vstack((X_tsne.T, y)).T
df_tsne = pd.DataFrame(X_tsne_data, columns=['d1','d2','class'])
print(df_tsne.head())
plt.figure(figsize=(8, 8))
sns.scatterplot(data=df_tsne,hue='class', x='d1', y='d2')
plt.show()