Day21打卡—常见降维算法
知识点回顾:
- LDA线性判别
- PCA主成分分析
- t-sne降维

作业:
自由作业:探索下什么时候用到降维?降维的主要应用?或者让ai给你出题,群里的同学互相学习下。可以考虑对比下在某些特定数据集上t-sne的可视化和pca可视化的区别。
(一)降维的应用场景和主要用途
何时使用降维?
-
高维数据可视化:当数据维度超过3维时,难以直接可视化,降维可将其映射到2D/3D。
-
特征冗余或噪声:数据中存在高度相关或冗余特征时,降维可提取关键信息。
-
模型训练加速:降低计算复杂度(如SVM、神经网络在高维数据中计算成本高)。
-
避免维度灾难:特征数接近样本量时,模型容易过拟合,降维可缓解。
主要应用领域
-
图像处理:将像素特征压缩(如人脸识别中的特征提取)。
-
自然语言处理:词向量降维(如Word2Vec的300维降到2D)。
-
生物信息学:基因表达数据分析。
-
推荐系统:用户-物品矩阵的稀疏性处理。
总结:降维方法的选择:
- 需要可视化或保留局部结构 → t-SNE,常被用于探索性数据分析和可视化任务
-
需要快速预处理或保留全局方差 → PCA。
-
有标签数据且需分类优化 → LDA
(二)在某些特定数据集上t-sne的可视化和pca可视化的区别
-
MNIST数据集:
-
PCA:全局结构保留,但不同数字可能重叠。
-
t-SNE:局部簇更清晰,不同数字分离明显。
-
-
环形/流形数据:
-
PCA:可能将环形数据压扁成线性分布。
-
t-SNE:能保留环形或非线性结构。
-
(三)应用
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler# 加载葡萄酒数据集(13维特征,3个类别)
data = load_wine()
X = data.data
y = data.target# 数据标准化(t-SNE对尺度敏感)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# PCA降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)# t-SNE降维(设置random_state保证结果可复现)
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)# 可视化对比
plt.figure(figsize=(12, 5))# PCA可视化
plt.subplot(1, 2, 1)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis', edgecolor='k')
plt.title('PCA Visualization of Wine Dataset')
plt.xlabel('PC1 ')
plt.ylabel('PC2 ')# t-SNE可视化
plt.subplot(1, 2, 2)
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y, cmap='viridis', edgecolor='k')
plt.title('t-SNE Visualization of Wine Dataset')
plt.xlabel('t-SNE Dimension 1')
plt.ylabel('t-SNE Dimension 2')plt.tight_layout()
plt.show()
结果:
@浙大疏锦行