课程: Python 机器学习基础

免费学习该课程!

今天就开通帐号,24,700 门业界名师课程任您挑!

特征缩放与归一化

外媒关注中国高校开设减肥课:激励学生更加健康

课程: Python 机器学习基础

特征缩放与归一化

百度 除主动安全升级之外,第二代斑马系统是年轻用户最爱的配置,包括人工智能语音控制、大数据主动导航等。

在进入模型训练前, 我们要完成一项重要的预处理步骤, 特征缩放,也称为归一化。 那么,我们为什么要进行特征缩放呢? 在现实世界中, 不同特征往往具有不同的单位和量级。 比如,收入的单位可能是元或者万元, 孩子数量通常是个位数, 预算可能是 5 位数、甚至 6 位数, 年龄范围从十几岁到几十岁。 如果我们直接把这些数值输入模型, 数值大的特征会对模型影响更大, 导致模型训练更加偏向于重视这些特征。 这种现象就叫做 量纲不一致导致的特征权重不公平。 那么在哪些模型中, 我们必须要做特征缩放呢? 首先是基于距离计算的模型, 比如 K 最近邻、支持向量机, 或者说 K-means 聚类, 它们直接依赖特征之间的距离, 所以,特征数值必须在统一尺度下才有意义。 然后是依赖梯度下降的模型, 像是逻辑回归、神经网络等等, 特征值差距过大,会导致梯度不稳定, 模型收敛变慢,甚至失败。 最后是正则化的线性模型。 如果特征没有缩放, 那么就会影响惩罚项对系数的影响。 我们本次归一化, 使用的是 MinMaxScaler。 它会把数值缩放到一个固定的范围, 默认就是 0-1。 所有的特征将被线性转换, 最小值对应 0,最大值对应 1, 其他值则按比例映射。 接下来,我们通过代码来实际操作一下。 首先我们创建一个新的代码框, 输入这样一行代码,运行一下。 这是 scikit-learn 中 提供的标准化代码工具, 用于按最小、最大范围进行缩放, 我们前面提到过。 接下来,我们再创建一个代码框, 运行这样一段代码。 在这里, 我们选择了这几个连续型的特征, 进行归一化, 收入、预算、年龄以及孩子的数量。 接着看第二行, 我们创建了一个缩放器实例, 用于后续的 fit() 和 transform()。 接下来,我们使用 fit_transform 这个函数 对数据拟合并转换, 然后返回缩放后的值。 然后,我们为每个缩放后的字段, 重新创建新的列名, 后缀加上 .scale 的,保留原始列, 以便后续对比或调试。 最后,我们把归一化后的数据, 添加到 Data Frame 作为新的列。 我们这里保留原始数据是一种良好的习惯, 可以方便后面的调试或者可视化分析。 最后,我们使用 print() 函数 打印了前 5 行归一化后的数据, 来验证处理的结果。 如果所有的值都在 0 到 1 之间,…

内容