我是靠谱客的博主 整齐铃铛,这篇文章主要介绍使用python简单实现三种常见的降维方法:PCA、t-SNE和Umap(降到二维进行可视化)三种常见的降维方法:PCA、t-SNE和Umap,现在分享给大家,希望可以做个参考。

三种常见的降维方法:PCA、t-SNE和Umap

1.PCA

主成分分析方法(Principal Component Analysis,PCA)是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import seaborn as sns #定义seaborn包 '''seaborn是python中的一个可视化库,是对matplotlib进行二次封装而成, 因为是基于matplotlib,所以seaborn的很多图表接口和参数设置与其很是接近。''' from sklearn.decomposition import PCA #导入PCA X_pca = PCA(n_components=2).fit_transform(train_x_fea) # n_components为PCA的参数,所要保留的主成分个数n,也即保留下来的特征个数n # train_x_fea为需要降维的数据 X_pca = np.vstack((X_pca.T, train_y)).T #把降维后的数据和标签按垂直方向(行顺序)堆叠数组构成一个新的数组 df_pca = pd.DataFrame(X_pca, columns=['1st_Component','2n_Component','label']) #把降维后的数据和标签进行组合 df_pca.head() plt.figure(figsize=(6, 6)) #定义输出图像大小 sns.scatterplot(data=df_pca, hue='label',x='1st_Component',y='2n_Component') #画散点图,定义X/Y轴 plt.rcParams['xtick.direction'] = 'in' #plt.rcParams主要作用是设置画的图的分辨率,大小等信息 plt.rcParams['ytick.direction'] = 'in' plt.title('PCA visualization of features') #定义标题 plt.legend(loc='best') #在最合适的地方显示便签 plt.savefig('PCA visualization of features.jpg') #保存图片 plt.show()

2.t-SNE

t-分布领域嵌入算法(t-Distributed Stochastic Neighbor Embedding,t-SNE)是一种降维技术,用于在二维或三维的低维空间中表示高维数据集,从而使其可视化。与其他降维算法(如PCA)相比,t-SNE创建了一个缩小的特征空间,相似的样本由附近的点建模,不相似的样本由高概率的远点建模。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
from sklearn.manifold import TSNE tsne = TSNE(n_components=2) X_tsne = tsne.fit_transform(train_x_fea) X_tsne_data = np.vstack((X_tsne.T, train_y)).T df_tsne = pd.DataFrame(X_tsne_data, columns=['Dim1','Dim2','label']) df_tsne.head() plt.figure(figsize=(6, 6)) sns.scatterplot(data=df_tsne,hue='label',x='Dim1',y='Dim2') plt.title('T-SNE visualization of features') plt.legend(loc='best') plt.savefig('T-SNE visualization of features.jpg') plt.show()

3.Umap

UMAP(Uniform Manifold Approximation and Projection for Dimension Reduction,一致的流形逼近和投影以进行降维)。 一致的流形近似和投影(UMAP)是一种降维技术,类似于t-SNE,可用于可视化,但也可用于一般的非线性降维。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import umap import seaborn as sns umap = umap.UMAP(n_components=2) X_umap = umap.fit_transform(train_x_fea) X_umap_data = np.vstack((X_umap.T, train_y)).T df_umap = pd.DataFrame(X_umap_data, columns=['Dim1','Dim2','label']) df_umap.head() plt.figure(figsize=(6, 6)) sns.scatterplot(data=df_umap,hue='label',x='Dim1',y='Dim2') plt.title('Umap Visualization of features') plt.legend(loc='best') plt.savefig('Umap visualization of features.jpg') plt.show()

可编辑标签的Umap可视化

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#使用标签分隔类(监督 UMAP) import umap import seaborn as sns train_y = pd.DataFrame(train_y) dic = {0:'non ac4C',1:'ac4C'} ls = [] for index,value in train_y.iterrows(): arr = np.array(value)[0] ls.append(dic[arr]) embedding = umap.UMAP().fit_transform(train_x_fea,train_y) plt.figure(figsize=(6, 6)) sns.scatterplot(embedding[:,0],embedding[:,1],hue=ls,palette='Set1',sizes=10) plt.gca().set_aspect('equal', 'datalim') plt.title('Umap visualization of features') plt.xlabel('umap1') plt.ylabel('umap2') plt.legend(loc='best') plt.savefig('Umap visualization of features.pdf') plt.show()
  • List item

最后

以上就是整齐铃铛最近收集整理的关于使用python简单实现三种常见的降维方法:PCA、t-SNE和Umap(降到二维进行可视化)三种常见的降维方法:PCA、t-SNE和Umap的全部内容,更多相关使用python简单实现三种常见内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部