【机器学习】(16)—— 数值数据

发布时间:2026/7/11 5:14:31

【机器学习】(16)—— 数值数据 数值数据画图、统计与异常值文章目录数值数据画图、统计与异常值1. 拼特征向量之前先别急着写代码2. 可视化用图代替「凭感觉」2.1 散点图特征与标签的关系2.2 直方图单列分布长什么样2.3 变换之后还要再看3. 统计描述给数据一张「体检报告」3.1 中心位置均值与中位数3.2 离散程度标准差3.3 分位数从最小到最大4. 什么是异常值4.1 别只信一张统计表4.2 两类典型来源5. 异常值怎么处理5.1 明确是错误删5.2 真实极端值看推理时要不要覆盖5.3 裁剪折中手段6. 贯穿管道每一步都复核假设7. 动手用 pandas 快速探索8. 与专栏前文的衔接9. 能力边界与常见误区9.1 适用边界9.2 常见误区10. 关键术语速查11. 延伸阅读12. 小结摘要上一篇讲清了特征向量是什么但拼向量之前有一步常被跳过——先把数值列「看清楚」。本文以专栏一贯的汽车重量与油耗数据为例讲两条基本功可视化散点图、直方图与统计描述均值、中位数、标准差、分位数并说明如何发现与处理异常值Outlier。适合准备动手做特征工程的读者。1. 拼特征向量之前先别急着写代码很多教程的流程是read_csv→fit→ 看准确率。真做项目时中间少了一大块读入数据 → 看图、算统计量 → 发现问题 → 清洗/变换 → 拼特征向量 → 训练第 15 篇说过模型吃的是浮点向量不是表格整行。可向量里的数从哪来若原始列里混着录入错误、极端长尾、特征与标签关系反常后面再怎么归一化、调学习率都救不回来。阶段你在回答什么探索这列数长什么样和标签什么关系诊断有没有错、有没有离群决策删、留、裁剪还是换变换方式这一步不炫技却最省时间——坏数据越早发现后面返工越少。2. 可视化用图代替「凭感觉」数字表格很难一眼看出规律。图能把分布和关系摊开给你看。拼特征向量前至少建议看两类图。2.1 散点图特征与标签的关系专栏第 01 篇用汽车重量预测油耗 MPG散点图已经出现过车越重MPG 往往越低负相关一目了然。重量千磅MPG3.50183.69153.44183.43164.34154.42142.37247 个点排成一条向下倾斜的带说明「用重量做特征」在直觉上说得通。若散点像一团随机噪声就要怀疑特征选错、标签噪声大或还需别的列。假设数据录入时多打了一个 0多了一行weight34.3, mpg16红点远远脱离主簇——不用等训练结束画图当天就能警觉。2.2 直方图单列分布长什么样散点图看两列关系直方图Histogram看一列自己的分布。7 辆正常车的重量都挤在 2.44.5 千磅加上 34.3 那一行后直方图会在远端多出一根孤零零的柱。这种「一头挤满、一头孤立」的形状是异常值的典型信号。2.3 变换之后还要再看归一化、分桶、对数变换会改变分布形状。第 14 篇讲过这些手段但不能只在原始数据上看一次图。每做一步变换都值得快速扫一眼主簇是否还在合理范围、是否制造出新的极端值。3. 统计描述给数据一张「体检报告」看图靠眼睛统计量用数字概括整列适合写进实验记录、做自动化监控。3.1 中心位置均值与中位数对 7 辆正常车重量求均值Meanx ˉ 3.50 3.69 3.44 3.43 4.34 4.42 2.37 7 ≈ 3.74 \bar{x} \frac{3.50 3.69 3.44 3.43 4.34 4.42 2.37}{7} \approx 3.74xˉ73.503.693.443.434.344.422.37​≈3.74中位数Median是把样本从小到大排列后正中间那个数。7 个数的中位数是第 4 个3.50。统计量7 辆正常车混入 34.3 后均值≈ 3.74≈ 7.55被拉偏中位数3.503.50较稳健均值对极端值敏感中位数更「抗离群」。两列对比若均值和中位数差很多往往说明分布偏斜或有异常点。3.2 离散程度标准差标准差Standard Deviation衡量数据离均值有多远s 1 n − 1 ∑ i 1 n ( x i − x ˉ ) 2 s \sqrt{\frac{1}{n-1}\sum_{i1}^{n}(x_i - \bar{x})^2}sn−11​i1∑n​(xi​−xˉ)2​7 辆正常车重量s ≈ 0.68 s \approx 0.68s≈0.68千磅。混入 34.3 后s ss会暴涨——又一个报警信号。3.3 分位数从最小到最大分位数Percentile把有序数据切成百分位点。常看五档记号含义7 辆正常车约P0最小值2.37P25第一四分位3.43P50中位数3.50P75第三四分位4.34P100最大值4.42P0 就是最小值P100 就是最大值。P50 即中位数。粗判异常的小技巧若「低端跨度」P25 − P0 与「高端跨度」P100 − P75严重不对称可能要查高端或低端的极端点。正常 7 辆车P25 − P0 ≈ 1.06P100 − P75 ≈ 0.08比较均衡。混入 34.3 后P100 − P75 ≈ 29.96高端突然拉长——值得重点核对。4. 什么是异常值异常值Outlier指在某一特征有时也包括标签上明显远离大多数样本的取值。它不自动等于「错误」。但若不处理线性回归的最小二乘会被大残差点猛拉逻辑回归、神经网络也可能被极端输入干扰梯度。4.1 别只信一张统计表分位数、均值、标准差很有用但不能迷信。数据看起来「平衡」仍可能藏着少量错误值夹在中间图上不易看见多列联合异常单看重量正常、重量与排量交叉才离谱标签错误重量对但 MPG 录错所以正确姿势是统计 可视化 业务常识三者交叉验证。4.2 两类典型来源类型例子常见处理录入/测量错误34.3 本是 3.43传感器故障修正或删除该样本真实但极端合法的重型卡车、超长里程视业务决定保留、裁剪或单独建模5. 异常值怎么处理发现可疑点之后按决策树想一遍比「一律删除」稳妥。5.1 明确是错误删weight34.3若核对行车证应是 3.43这条记录应从训练集删掉或改对原始值。让错误点参与训练等于教模型学噪声。5.2 真实极端值看推理时要不要覆盖若业务上线上也会出现这类重型车且你希望模型对它们给出合理预测可以保留但要意识到极端点有时与标签的极端表现相关反而携带信息有时则只是特征空间的噪声会伤害泛化。若线上几乎不会出现或你不在乎这类样本的预测可以删除训练中的这些行。5.3 裁剪折中手段裁剪Clipping把数值限制在区间[ L , U ] [L, U][L,U]内例如按 P1P99 或业务上下界x clip min ⁡ ( U , max ⁡ ( L , x ) ) x_{\text{clip}} \min\bigl(U,\ \max(L,\ x)\bigr)xclip​min(U,max(L,x))汽车重量若设U 5 U5U5千磅34.3 会被压到 5既保留「偏重」信号又避免梯度爆炸。裁剪会损失信息适合「不想删样本、又要压住极端」的场景。6. 贯穿管道每一步都复核假设特征工程不是一次性任务。推荐在链路关键节点重复「画图 关键统计量」节点建议检查原始数据散点、直方图、P0/P50/P100删错/补缺后行数、均值/中位数是否合理裁剪或分桶后是否堆在边界、桶是否太空标准化后是否近似均值 0、方差 1训练集上第 15 篇强调训练与推理必须用同一套变换。探索阶段就要把「当时看到了什么、决定了删哪几行、裁剪阈值多少」记下来否则三个月后很难复现。7. 动手用 pandas 快速探索下面用与正文相同的数据做最小探索含一行故意录入错误importpandasaspd dfpd.DataFrame({weight:[3.50,3.69,3.44,3.43,4.34,4.42,2.37,34.3],mpg:[18,15,18,16,15,14,24,16],})# 1. 描述性统计均值、标准差、分位数一次看齐print(df[weight].describe(percentiles[.25,.5,.75]))# 2. 散点看 weight 与 mpg 关系df.plot.scatter(xweight,ympg,titleweight vs mpg)# 3. 直方图看 weight 分布df[weight].plot.hist(bins8,titleweight distribution)# 4. 粗筛重量超过 10 千磅视为可疑业务阈值示例suspectdf[df[weight]10]print(rows to review:\n,suspect)# 5. 确认是录入错误后删除df_cleandf[df[weight]10].copy()print(median weight:,df_clean[weight].median())运行后你会看到describe里max飙到 34.3median仍接近 3.5散点图红点孤立。确认错误后df_clean才适合进入「拼特征向量 → 训练」环节。8. 与专栏前文的衔接篇章本篇补上的环节第 01 篇已用散点图建立重量–油耗直觉第 14 篇讲归一化、分桶、清洗默认你「知道要处理」第 15 篇讲向量结构默认输入已是浮点数组本篇回答处理之前如何发现该处理什么可以把流程记成探索本篇→ 清洗与变换第 14 篇→ 拼向量第 15 篇→ 模型第 01 篇起9. 能力边界与常见误区9.1 适用边界本篇针对表格型数值列的初探图像、文本有各自的探索工具像素直方图、词频等但「先看再建模」的思路相同。自动化异常检测算法Isolation Forest 等是进阶话题初学阶段肉眼 基础统计通常够用。9.2 常见误区误区正解「数据不大不用看图」小数据集一个错值就能毁掉回归线「均值正常就没问题」均值会被少数极端值掩盖要看中位数与分位数「发现异常值一律删除」先分清错误 vs 真实再决定删/留/裁剪「只在开头看一次图」每次变换后都应快速复查「统计量可以代替业务判断」34.3 是否可能要对照真实世界轿车重量量级「探索集和测试集混着洗」清洗规则应只根据训练/探索划分拟定避免泄漏10. 关键术语速查术语一句话解释探索性分析训练前对数据看图、算统计、提假设散点图两列数值的关系图常用来观察特征与标签直方图单列数值的分布图看集中与长尾均值算术平均对极端值敏感中位数排序后的中间值较稳健标准差衡量数据离散程度分位数如 P25、P75描述分布位置异常值远离主流样本的取值裁剪把数值限制在预设上下界内11. 延伸阅读资源适合看什么pandas describe一键输出均值、分位数等pandas 可视化plot.scatter、plot.hist快速出图NumPy 百分位数np.percentile计算分位点专栏第 14 篇归一化、分桶与清洗专栏第 15 篇从表格到特征向量12. 小结拼特征向量之前请养成两个习惯画图看关系与分布算统计量给每列做体检。异常值未必是垃圾数据但必须先分清是录入错误还是真实极端再选择删除、保留或裁剪。记住可视化 统计描述 → 发现异常 → 清洗决策 → 再拼特征向量下一篇进入类别特征品牌、颜色这类非数值字段如何编码进特征向量。系列导航上一篇【机器学习】15—— 特征向量下一篇预告类别特征处理入门——词表、One-Hot 与特征交叉如果本篇对你有帮助欢迎点赞、收藏、关注博主机器学习专栏持续更新中下次更新不迷路。

相关新闻