前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >降维方法 PCA、t-sne、Umap 的 python 实现

降维方法 PCA、t-sne、Umap 的 python 实现

作者头像
为为为什么
发布2023-06-27 10:51:47
发布2023-06-27 10:51:47
1.2K0
举报
文章被收录于专栏:又见苍岚又见苍岚

本文介绍三种常用降维方法 PCA、t-sne、Umap 的 Python 实现。

数据集

提取游戏音频 5.7W 段,提取声音指纹特征,放在 fea.json 文件中用于测试。

PCA

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

示例代码

12345678910111213141516171819202122232425

import mtutils as mtfrom sklearn.manifold import TSNEfrom sklearn.preprocessing import StandardScalerfrom sklearn.decomposition import PCAimport matplotlib.pyplot as pltimport numpy as npfea_info = mt.json_load('fea.json')fea_data = np.array(list(fea_info.values()))scaler = StandardScaler()data = scaler.fit_transform(fea_data)X_pca = PCA(n_components=2).fit_transform(data) plt.scatter(X_pca:, 0, X_pca:, 1)plt.show()tsne = TSNE(n_components=2, perplexity=20, random_state=42)new_data = tsne.fit_transform(np.array(fea_list))plt.scatter(new_data:, 0, new_data:, 1)plt.show()

测试效果

t-SNE

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

示例代码

12345678910111213141516171819

import mtutils as mtfrom sklearn.manifold import TSNEfrom sklearn.preprocessing import StandardScalerimport matplotlib.pyplot as pltimport numpy as npscaler = StandardScaler()fea_info = mt.json_load('fea.json')fea_list = list(fea_info.values())data = scaler.fit_transform(fea_list)tsne = TSNE(n_components=2, perplexity=20, random_state=42)new_data = tsne.fit_transform(np.array(fea_list))plt.scatter(new_data:, 0, new_data:, 1)plt.show()pass

测试效果

Umap

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

示例代码

12345678910111213141516171819202122

import mtutils as mtfrom sklearn.manifold import TSNEfrom sklearn.preprocessing import StandardScalerimport matplotlib.pyplot as pltimport numpy as npimport umapscaler = StandardScaler()fea_info = mt.json_load('fea.json')fea_list = list(fea_info.values())data = scaler.fit_transform(fea_list)reducer = umap.UMAP(n_components=2)embedding = reducer.fit_transform(data)plt.scatter(embedding:, 0, embedding:, 1)plt.show()pass

测试效果

参考资料

文章链接: https://cloud.tencent.com/developer/article/2298180

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年6月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据集
  • PCA
    • 示例代码
    • 测试效果
  • t-SNE
    • 示例代码
    • 测试效果
  • Umap
    • 示例代码
    • 测试效果
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档