首页
技术小册
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.3 对训练数据和测试数据进行相同的缩放 在机器学习项目中,数据预处理是至关重要的一步,它直接关系到模型的性能与泛化能力。其中,特征缩放(Feature Scaling)是数据预处理中的一项关键技术,旨在将不同量级或分布范围的特征转换到同一尺度上,以便算法能够更有效地学习和比较这些特征。对于包含训练集和测试集(或验证集)的数据集来说,确保对这两部分数据应用相同的缩放参数尤为重要,这是因为在现实应用中,模型需要根据未见过的测试数据做出预测,而测试数据在模型训练期间是不可见的。因此,本章节将深入探讨为何需要对训练数据和测试数据进行相同的缩放,以及如何实现这一过程。 #### 3.3.3.1 为何需要相同的缩放 1. **保持数据分布的一致性**:训练过程中,模型学习的是训练数据的分布特性。如果测试数据与训练数据在缩放上存在差异,那么模型在测试数据上的表现可能会大打折扣,因为模型“看到”的是“变形”的测试数据。 2. **避免信息泄露**:如果在对测试数据进行缩放时使用了测试数据本身的统计信息(如均值、标准差等),这实际上构成了一种信息泄露,因为在实际应用中,测试数据应当是完全未知的。因此,必须使用训练数据的统计信息来缩放测试数据。 3. **提升模型性能**:对于很多基于距离的算法(如K近邻、支持向量机)和需要梯度下降的算法(如逻辑回归、神经网络),特征缩放能够显著提高算法的收敛速度和性能。如果训练集和测试集使用不同的缩放参数,这些算法的效果将大打折扣。 #### 3.3.3.2 常见的缩放方法 1. **最小-最大标准化(Min-Max Scaling)**: 这种方法将特征缩放到给定的最小值和最大值之间(通常是0和1),计算公式为: \[ X_{\text{norm}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} \] 其中,$X_{\text{min}}$ 和 $X_{\text{max}}$ 是训练集上该特征的最小值和最大值。测试集也应使用相同的$X_{\text{min}}$和$X_{\text{max}}$进行缩放。 2. **Z分数标准化(Z-Score Normalization)**: 也称为标准差标准化,它将特征转换为均值为0、标准差为1的分布。计算公式为: \[ X_{\text{norm}} = \frac{X - \mu}{\sigma} \] 其中,$\mu$ 和 $\sigma$ 分别是训练集上该特征的均值和标准差。同样,测试集也需要使用训练集的$\mu$和$\sigma$进行缩放。 3. **其他方法**: 除了上述两种常用方法外,还有如对数变换、Box-Cox变换等更复杂的缩放方法,这些方法的选择依赖于数据的具体分布特性和模型的需求。 #### 3.3.3.3 实践指南 ##### 使用Python和scikit-learn实现 在Python中,`scikit-learn`库提供了强大的数据预处理功能,包括多种特征缩放方法。以下是一个使用`MinMaxScaler`和`StandardScaler`对训练集和测试集进行相同缩放的示例。 ```python from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler, StandardScaler import numpy as np # 假设X是原始数据集,y是目标变量(这里为了示例省略y) # X = np.array([[...], [...], ...]) # 划分训练集和测试集 X_train, X_test = train_test_split(X, test_size=0.2, random_state=42) # 初始化缩放器 scaler_min_max = MinMaxScaler() scaler_standard = StandardScaler() # 使用训练集数据拟合缩放器 scaler_min_max.fit(X_train) scaler_standard.fit(X_train) # 应用缩放器到训练集和测试集 X_train_min_max = scaler_min_max.transform(X_train) X_test_min_max = scaler_min_max.transform(X_test) # 注意:这里使用的是训练集拟合的参数 X_train_standard = scaler_standard.transform(X_train) X_test_standard = scaler_standard.transform(X_test) # 同样,使用训练集拟合的参数 # 现在X_train_min_max, X_test_min_max, X_train_standard, X_test_standard都已准备好用于后续建模 ``` #### 3.3.3.4 注意事项 1. **保持一致性**:在整个项目流程中,一旦确定了缩放方法,就必须在整个数据集(包括未来的新数据)上保持一致地使用该方法。 2. **数据泄露问题**:务必避免在测试集或新数据上使用任何形式的“未来信息”进行预处理,包括缩放参数的计算。 3. **性能考虑**:虽然特征缩放通常能提升模型性能,但它也增加了计算成本。在资源受限的情况下,需要权衡这一因素。 4. **适用性评估**:不同的缩放方法适用于不同的数据分布和模型需求。在选择缩放方法时,应基于数据的具体特性和模型的预期性能进行评估。 总之,对训练数据和测试数据进行相同的缩放是机器学习项目中一个不可忽视的重要环节。它不仅能够保证数据分布的一致性,还能显著提升模型的性能和泛化能力。通过合理选择和应用缩放方法,我们可以为后续的模型训练与评估打下坚实的数据基础。
上一篇:
3.3.2 应用数据变换
下一篇:
3.3.4 预处理对监督学习的作用
该分类下的相关小册推荐:
Python合辑10-函数
剑指Python(万变不离其宗)
Python数据分析与挖掘实战(上)
Python合辑11-闭包函数
Python合辑14-面向对象编程案例(下)
实战Python网络爬虫
Python合辑8-变量和运算符
Python与办公-玩转Word
Python编程轻松进阶(五)
Python与办公-玩转PDF
Python合辑13-面向对象编程案例(上)
Python合辑2-字符串常用方法