惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
小众软件
小众软件
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】
爱范儿
爱范儿
博客园 - 聂微东
美团技术团队
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
罗磊的独立博客
V
Visual Studio Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
V
V2EX
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
降维方法 PCA、t-sne、Umap 的 python 实现
Yiwei Zhang · 2023-06-19 · via 又见苍岚

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

数据集

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

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
import mtutils as mt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np

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

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import mtutils as mt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import numpy as np

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

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import mtutils as mt
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import numpy as np
import umap

scaler = 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://www.zywvvd.com/notes/study/machine-learning/dimension-reduction/dedu-dim/