趋近智
正如本章引言中所强调的,将原始数据直接输入到机器学习 (machine learning)算法中,常常会导致不理想的结果甚至彻底失败。实际情况是,从各种过程中收集到的数据集很少是完美无瑕的。它们经常表现出违反许多学习算法假设或要求的数据特点。本节将详细说明为什么通过预处理来处理这些数据特点,不仅仅是一种好的做法,更是构建有效模型的根本需要。
机器学习 (machine learning)算法,尽管它们很复杂,但通常基于对输入数据做出假设的数学原理进行操作。让我们考虑一些原始数据导致问题的常见情况:
特征尺度不一致: 想象一个数据集包含两个特征:age(范围从20到70)和annual_income(范围从30,000到200,000)。许多算法,特别是那些基于距离计算或梯度下降 (gradient descent)的算法,会受到范围和数值更大的特征(本例中是收入)的不成比例的影响。
类别数据: 算法对输入数据执行数学运算。它们从根本上理解数字,而不是像'Red'、'Green'、'Blue'或'New York'、'London'、'Tokyo'这样的文本标签。直接将这类类别文本数据输入到大多数Scikit-learn估计器中会导致错误。我们需要系统的方法将这些非数值特征转换为算法可以处理的数值格式,避免无意中引入误导性信息(例如,如果我们简单地将'Red'和'Blue'映射为1和2,就会暗示它们之间存在顺序)。独热编码等技术就是为此目的而设计的。
缺失值: 数据集常有缺失条目,通常表示为NaN(非数字)或类似的占位符。大多数机器学习算法本质上未被设计为处理缺失值。尝试使用包含NaN的数据训练模型通常会在拟合过程中导致错误。虽然简单地删除包含缺失数据的行或列是一种选择,但这可能导致大量信息丢失,尤其当缺失值普遍存在时。像插补这样的预处理步骤旨在利用可用数据中得出的统计估计来智能地填补这些空白。
忽视数据预处理可能导致几种不良结果:
数据预处理是机器学习 (machine learning)工作流中的一个必不可少的一步。它涉及将原始数据转换为干净、一致且算法兼容的格式。此处提供使用Scikit-learn强大且一致的Transformer接口实现预处理技术的实用指导。
StandardScaler、MinMaxScaler和RobustScaler这样的技术,用于将数值特征转换到共同的尺度上。OneHotEncoder和OrdinalEncoder将类别数据转换为数值表示。SimpleImputer这样的策略来填充缺失数据点。通过掌握这些技术,使你的模型能够有效学习数据,显著提高你构建准确可靠机器学习解决方案的机会。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•