更新于 2026年10月15日 全文 872 字未阅读

数值型数据:模型如何使用特征向量构建输入#

到目前为止,我们一直给人一种印象:模型直接作用于数据集中的行上(即直接将每一行作为模型的输入)。但实际上,输入到模型的数据与这种直觉并不完全一致。


模型并不直接使用原始单元格#

设想一个数据集一共有 5 列(column),但模型只会用到其中 2 列(列 b 和列 d)作为特征。那么当模型处理第 3 行样本时,它是不是简单地"抓取"第 3 行的两个高亮单元格(3b 和 3d)作为输入呢?

图 1:模型从数据集直接读取一个样本,其中 b 列与 d 列的第 3 行被高亮
图 1. 并非模型读取数据的真实方式

事实上,真正作为模型输入的是一组由浮点数值组成的数组,称为「特征向量(feature vector)」。你可以把特征向量理解为:组成单个样本的、所有浮点数的集合。

图 2:特征向量位于数据集与模型之间
图 2. 接近真实情况,但仍不够准确

特征向量很少直接使用原始值#

然而,特征向量几乎从不直接使用数据集中的原始值。通常需要先把数据集的原始值处理成"模型更容易学习的表示形式"(即标准化),再喂给模型。一组更接近真实情况的特征向量可能看起来像这样:

图 3:特征向量包含两个浮点数值:0.13 与 0.47
图 3. 一个更真实的特征向量

用数据集的真实值训练,模型的预测效果不是应该比用转换后的值更好吗?

反直觉的答案是:不。用数据集的原始值训练,并不会比用经过转换的值产生更好的预测效果。


特征工程:对原始数据进行标准化处理#

你需要自己决定"把数据集中的原始值如何表达为更有利于模型训练的特征向量",这个过程叫做「特征工程(feature engineering)」,是机器学习中至关重要的环节之一。

最常见的两种特征工程技术是:

  • 归一化(Normalization):把数值转换到统一的标准区间内。

  • 分箱(Binning),也称为分桶(Bucketing):把数值切到若干个"桶"区间内。

本节内容将覆盖归一化与分箱。在下一节内容中——处理分类数据——则将覆盖其它形式的预处理方法,例如把字符串等非数值型数据转换为浮点数等。

同时,需要注意的是 特征向量里的每一个值都必须是浮点数。然而,许多特征天然就是字符串或其它非数值形态,因此,“把非数值表示为数值"在特征工程里占了相当大的比重。在后续模块中你还会大量看到这一类问题。


关键术语#

  • 特征向量(Feature Vector)

  • 特征工程(Feature Engineering)

  • 归一化(Normalization)

  • 分箱 / 分桶(Binning / Bucketing)

  • 预处理(Preprocessing)

阅读 --