我是靠谱客的博主 整齐铃铛,最近开发中收集的这篇文章主要介绍使用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维特征。

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创建了一个缩小的特征空间,相似的样本由附近的点建模,不相似的样本由高概率的远点建模。

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,可用于可视化,但也可用于一般的非线性降维。

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可视化

#使用标签分隔类(监督 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简单实现三种常见的降维方法:PCA、t-SNE和Umap(降到二维进行可视化)三种常见的降维方法:PCA、t-SNE和Umap所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部