首页
技术小册
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.3.2 应用数据变换 在机器学习的实践中,数据预处理是至关重要的一环,它直接影响到模型的性能与效果。数据变换作为预处理的关键步骤之一,旨在通过改变数据的表示形式来优化后续的学习过程。本章节将深入探讨几种常见的数据变换技术,包括标准化、归一化、多项式特征扩展、编码类别变量、以及使用PCA(主成分分析)进行降维等,并展示如何在Python中使用这些技术来改进机器学习模型的性能。 #### 3.3.2.1 标准化与归一化 **标准化(Standardization)**和**归一化(Normalization)**是两种常用的数据缩放技术,它们有助于处理不同量级或分布特征的问题,使得所有特征对模型的贡献相对均衡。 - **标准化**:通过将特征值减去其均值后除以标准差,使得处理后的数据符合标准正态分布(均值为0,标准差为1)。这种方法对于那些数据分布具有明显偏态或异常值的情况尤为有效。在Python中,可以使用`sklearn.preprocessing`模块的`StandardScaler`实现。 ```python from sklearn.preprocessing import StandardScaler # 假设X是原始数据 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) ``` - **归一化**:则是将特征值缩放到一个小的特定区间,通常是[0, 1]。这种方法在处理某些算法(如神经网络)时很有用,因为它们的输入层可能需要特定的激活函数,这些函数在输入值接近0或1时表现最佳。归一化可以通过`MinMaxScaler`实现。 ```python from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() X_normalized = scaler.fit_transform(X) ``` #### 3.3.2.2 多项式特征扩展 多项式特征扩展是一种生成多项式组合特征的技术,它可以增加模型的复杂度,使其能够学习特征之间的非线性关系。这在某些情况下能显著提高模型的预测能力。`PolynomialFeatures`类可以用于生成多项式特征。 ```python from sklearn.preprocessing import PolynomialFeatures # 假设X是原始数据,我们想生成2次多项式特征 poly = PolynomialFeatures(degree=2) X_poly = poly.fit_transform(X) ``` 注意,多项式特征的增加可能会导致模型过拟合,因此需要谨慎使用,并通过交叉验证等方法评估其对模型性能的影响。 #### 3.3.2.3 编码类别变量 机器学习模型通常要求输入数据为数值型。然而,在实际应用中,我们经常遇到类别型数据(如性别、国籍等)。为了将这些类别数据用于机器学习模型,我们需要对其进行编码。 - **标签编码(Label Encoding)**:直接将每个类别映射到一个唯一的整数。这种方法适用于有序类别数据,但在无序类别数据上可能会导致模型误解类别之间的关系。 - **独热编码(One-Hot Encoding)**:为每个类别创建一个新的二进制列,只有属于该类别的行在该列上为1,其余为0。这种方法避免了标签编码可能导致的类别间顺序误解问题,但会显著增加特征空间的大小。 在Python中,`LabelEncoder`和`OneHotEncoder`分别用于这两种编码方式。 ```python from sklearn.preprocessing import LabelEncoder, OneHotEncoder # 标签编码示例 le = LabelEncoder() y_encoded = le.fit_transform(y) # 假设y是类别标签 # 独热编码示例 ohe = OneHotEncoder(sparse=False) # sparse=False返回numpy数组而非稀疏矩阵 y_onehot = ohe.fit_transform(y.reshape(-1, 1)) ``` #### 3.3.2.4 主成分分析(PCA) 主成分分析是一种常用的数据降维技术,它通过线性变换将原始数据投影到一个新的坐标系中,使得投影后的数据在第一个坐标(即第一主成分)上的方差最大,依次类推。通过这种方式,PCA可以帮助我们识别数据中的主要变异方向,并去除噪声和冗余信息,从而降低模型的复杂度和提高训练速度。 在Python中,`PCA`类提供了实现PCA的功能。 ```python from sklearn.decomposition import PCA # 假设X是原始数据 pca = PCA(n_components=2) # 将数据降维到2维 X_pca = pca.fit_transform(X) # 查看降维后的主成分解释的数据方差比例 print(pca.explained_variance_ratio_) ``` 通过PCA降维,我们不仅减少了数据的维度,还可能发现数据中潜在的、对结果有重要影响的特征组合。 #### 总结 数据变换是机器学习预处理阶段不可或缺的一部分,它通过调整数据的形态和分布,为后续的模型训练打下良好的基础。本章介绍了标准化、归一化、多项式特征扩展、类别变量编码以及PCA降维等几种重要的数据变换技术,并展示了如何在Python中使用`scikit-learn`库实现这些技术。正确应用数据变换,可以显著提升机器学习模型的性能和泛化能力。然而,也需要注意,过度的变换可能会导致信息丢失或引入不必要的复杂性,因此在实际操作中需要权衡各种因素,选择最适合当前问题的数据变换策略。
上一篇:
3.3.1 不同类型的预处理
下一篇:
3.3.3 对训练数据和测试数据进行相同的缩放
该分类下的相关小册推荐:
Python编程轻松进阶(二)
Python面试指南
Python合辑5-格式化字符串
剑指Python(磨刀不误砍柴工)
Python与办公-玩转Excel
Python数据分析与挖掘实战(下)
Python合辑12-面向对象
Python编程轻松进阶(四)
Python与办公-玩转Word
Python编程轻松进阶(三)
Python自动化办公实战
Python合辑6-字典专题