首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 为何选择机器学习
1.1.1 机器学习能够解决的问题
1.1.2 熟悉任务和数据
1.2 为何选择Python
1.3 scikit-learn
1.4 必要的库和工具
1.4.1 Jupyter Notebook
1.4.2 NumPy
1.4.3 SciPy
1.4.4 matplotlib
1.4.5 pandas
1.4.6 mglearn
1.5 Python 2 与Python 3 的对比
1.7 第 一个应用:鸢尾花分类
1.7.1 初识数据
1.7.2 衡量模型是否成功:训练数据与测试数据
1.7.3 要事第 一:观察数据
1.7.4 构建第 一个模型:k 近邻算法
1.7.5 做出预测
1.7.6 评估模型
2.1 分类与回归
2.2 泛化、过拟合与欠拟合
2.3 监督学习算法
2.3.1 一些样本数据集
2.3.2 k 近邻
2.3.3 线性模型
2.3.4 朴素贝叶斯分类器
2.3.5 决策树
2.3.6 决策树集成
2.3.7 核支持向量机
2.3.8 神经网络(深度学习)
2.4 分类器的不确定度估计
2.4.1 决策函数
2.4.2 预测概率
2.4.3 多分类问题的不确定度
3.1 无监督学习的类型
3.2 无监督学习的挑战
3.3 预处理与缩放
3.3.1 不同类型的预处理
3.3.2 应用数据变换
3.3.3 对训练数据和测试数据进行相同的缩放
3.3.4 预处理对监督学习的作用
3.4 降维、特征提取与流形学习
3.4.1 主成分分析
3.4.2 非负矩阵分解
3.4.3 用t-SNE 进行流形学习
3.5 聚类
3.5.1 k 均值聚类
3.5.2 凝聚聚类
3.5.3 DBSCAN
3.5.4 聚类算法的对比与评估
3.5.5 聚类方法小结
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(上)
小册名称:Python机器学习基础教程(上)
### 3.4.1 主成分分析(Principal Component Analysis, PCA) #### 引言 在数据科学和机器学习的广阔领域中,主成分分析(PCA)是一种强大而广泛使用的数据降维技术。它旨在通过线性变换将多维数据转换到一个新的坐标系中,使得新坐标系的第一个轴(称为第一主成分)上的数据方差最大,即数据的变异性最大,而后续轴则依次递减,每个轴都与前面的轴正交,从而确保数据的不同维度之间信息不重叠。通过这种方式,PCA能够有效提取数据中的主要特征,同时去除噪声和冗余,对于数据可视化、特征提取、数据压缩等场景具有极高的应用价值。 #### PCA的基本原理 ##### 1. 协方差矩阵 PCA的起点是计算数据的协方差矩阵。协方差矩阵是一个对称矩阵,其元素表示了不同维度之间的协方差,即它们共同变化的程度。对于一个包含n个观测值和p个变量的数据集,协方差矩阵是一个p×p的矩阵,其中每个元素$C_{ij}$表示第i个变量和第j个变量之间的协方差。 ##### 2. 特征值和特征向量 接下来,对协方差矩阵进行特征值分解,找到其特征值和对应的特征向量。特征值反映了每个特征向量方向上数据变异的程度,而特征向量则指明了这些方向。在PCA中,我们按照特征值的大小对特征向量进行排序,特征值最大的特征向量对应第一主成分,以此类推。 ##### 3. 选择主成分 通常,我们不会保留所有的主成分,而是根据特征值的大小选择前k个主成分,以达到数据降维的目的。选择多少个主成分取决于我们希望保留多少原始数据的信息量,这通常通过计算前k个主成分的累计贡献率(即前k个特征值之和占总特征值之和的比例)来决定。 ##### 4. 数据转换 最后,利用选定的主成分(即特征向量)对数据进行线性变换,得到降维后的新数据集。这个新数据集保留了原始数据的主要特征,但维度更低,更易于处理和分析。 #### PCA的步骤 1. **数据标准化**:由于PCA对数据的尺度敏感,因此首先需要对原始数据进行标准化处理,即减去均值并除以标准差,使得每个变量的均值为0,方差为1。 2. **计算协方差矩阵**:基于标准化后的数据,计算其协方差矩阵。 3. **特征值分解**:对协方差矩阵进行特征值分解,得到特征值和特征向量。 4. **选择主成分**:根据特征值的大小选择前k个主成分,通常通过设定累计贡献率的阈值来确定k的值。 5. **数据投影**:将原始数据投影到选定的主成分上,得到降维后的数据。 #### PCA的应用场景 1. **数据可视化**:在多维数据分析中,PCA可以将高维数据降维到二维或三维空间,便于直观展示和发现数据中的模式和结构。 2. **特征提取**:在机器学习任务中,PCA可以作为一种有效的特征提取方法,通过减少特征的维度来降低模型的复杂度,同时尽可能保留对目标变量预测有用的信息。 3. **数据压缩**:在数据存储和传输过程中,PCA可以通过去除数据中的冗余信息来减少数据量,提高存储和传输效率。 4. **噪声去除**:PCA能够分离出数据中的主要信号和噪声成分,通过只保留主信号成分来去除噪声,提高数据的信噪比。 #### PCA的优缺点 **优点**: - **降维效果好**:能够有效地降低数据的维度,同时保留大部分重要信息。 - **计算简单**:PCA的算法相对简单,易于实现。 - **无参数限制**:PCA不需要用户设置参数,完全由数据本身决定。 **缺点**: - **对异常值敏感**:由于PCA依赖于协方差矩阵,因此对数据中的异常值非常敏感。 - **可能丢失非线性结构**:PCA是一种线性降维方法,可能无法有效捕捉数据中的非线性结构。 - **解释性不强**:虽然PCA能够提取出主成分,但这些主成分往往难以直接解释为原始数据的某个具体特征。 #### 实战案例:使用Python实现PCA 在Python中,我们可以使用`scikit-learn`库中的`PCA`类来方便地实现PCA。以下是一个简单的示例,展示了如何使用PCA对鸢尾花(Iris)数据集进行降维处理。 ```python from sklearn.datasets import load_iris from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt # 加载数据 iris = load_iris() X = iris.data y = iris.target # 数据标准化 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 应用PCA pca = PCA(n_components=2) # 选择前两个主成分 X_pca = pca.fit_transform(X_scaled) # 可视化结果 plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y) plt.xlabel('Principal Component 1') plt.ylabel('Principal Component 2') plt.title('PCA of Iris Dataset') plt.colorbar() plt.show() ``` 在这个例子中,我们首先加载了鸢尾花数据集,并对其进行了标准化处理。然后,我们创建了一个`PCA`对象,并指定了希望保留的主成分数量(这里为2),以便将数据从原始的4维空间降到2维空间。最后,我们使用散点图将降维后的数据可视化出来,不同类别的鸢尾花通过不同的颜色表示。从图中可以清晰地看到,尽管数据的维度降低了,但不同类别的鸢尾花仍然能够很好地被区分开来,这说明了PCA在保留数据主要特征方面的有效性。
上一篇:
3.4 降维、特征提取与流形学习
下一篇:
3.4.2 非负矩阵分解
该分类下的相关小册推荐:
Python合辑13-面向对象编程案例(上)
Python与办公-玩转PDF
Python编程轻松进阶(二)
Python数据分析与挖掘实战(下)
Python自动化办公实战
剑指Python(万变不离其宗)
Python数据分析与挖掘实战(上)
Python合辑12-面向对象
Python合辑3-字符串用法深度总结
Python机器学习基础教程(下)
Python3网络爬虫开发实战(下)
Python编程轻松进阶(三)