Python打卡 DAY 21
知识点回顾:
1. LDA线性判别
2. PCA主成分分析
3. t-sne降维
作业:
自由作业:探索下什么时候用到降维?降维的主要应用?对比下在某些特定数据集上t-sne的可视化和pca可视化的区别。
何时使用降维?
- 高维数据可视化
当数据维度超过3维时,无法直接可视化。降维(如2D/3D投影)能帮助探索数据分布。 - 特征冗余或噪声问题
数据中存在大量相关特征或噪声时,降维可提取核心信息。 - 模型训练效率提升
高维数据导致计算复杂度高(如分类、聚类),降维可加速算法运行。 - 缓解维度灾难(Curse of Dimensionality)
高维空间中数据稀疏性增加,降维能提升模型泛化能力。
降维的主要应用?
- 数据可视化 (Data Visualization): 这是最直观的应用。将高维数据降到2维或3维,方便绘制散点图等,帮助我们理解数据的内在结构(如使用 PCA, t-SNE, UMAP)。
- 图像处理 (Image Processing):
- 人脸识别: 特征脸 (Eigenfaces) 就是基于 PCA 的一种人脸识别技术,将人脸图像的高维像素数据降维到低维特征空间。
- 图像压缩: 通过去除冗余信息减少图像文件大小。
- 特征提取: 提取图像中更有代表性的低维特征。
- 文本分析 (Text Analysis):
- 主题建模 (Topic Modeling): 潜在语义分析 (LSA/LSI) 等方法本质上是将文档-词矩阵进行降维,发现文档中的隐藏主题。
- 文本分类/聚类: 降低文本特征(如词频向量)的维度,提高文本处理任务的效率和准确性。
- 生物信息学 (Bioinformatics): 分析基因表达数据、蛋白质组学数据等高维生物数据,找出关键的生物标志物或基因通路。
- 推荐系统 (Recommendation Systems): 矩阵分解 (Matrix Factorization) 等技术将用户和物品映射到低维的隐空间,用于预测用户对物品的评分或偏好。
- 噪声过滤 (Noise Reduction): 通过保留数据中方差最大的主成分(如 PCA),可以去除方差较小的噪声成分。
- 特征工程 (Feature Engineering): 降维可以用来创建新的、更紧凑、更富有信息量的特征表示。
对比下在某些特定数据集上t-sne的可视化和pca可视化的区别
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
feature_names = iris.feature_names# 数据标准化(PCA对尺度敏感)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# PCA降维到2维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)# t-SNE降维到2维(perplexity参数需根据数据调整)
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)# 可视化函数
def plot_scatter(X, title):plt.figure(figsize=(8, 6))for label in np.unique(y):plt.scatter(X[y == label, 0], X[y == label, 1], label=f"Class {label}",alpha=0.7)plt.title(title)plt.xlabel("Component 1")plt.ylabel("Component 2")plt.legend()plt.grid(True)plt.show()# 绘制PCA结果
plot_scatter(X_pca, "PCA Visualization of Iris Dataset")# 绘制t-SNE结果
plot_scatter(X_tsne, "t-SNE Visualization of Iris Dataset")
- PCA:适合线性可分的数据,保留全局结构,计算快,但可能无法捕捉复杂非线性关系。不同类别之间有一定重叠。
- t-SNE:适合高维数据的可视化,尤其在展示复杂数据的局部结构时效果显著,但计算慢且不适用于降维后的预测任务。不同类别的数据点分离更加明显,簇内距离更紧凑,簇间距离更大。
根据实际需求选择:
- 可视化 → t-SNE(局部细节)或PCA(全局趋势)。
- 建模/预测 → PCA、LDA等线性方法更合适。
@浙大疏锦行