【机器学习】(19)—— 数据特性与标签

发布时间:2026/9/15 3:30:23

【机器学习】(19)—— 数据特性与标签 数据特性与标签划分前先摸清文章目录数据特性与标签划分前先摸清1. 为什么「先划分」还不够2. 数据特性四问2.1 类型是什么数据2.2 数量样本够不够2.3 数据质量2.4 可信度3. 不可靠数据从哪来4. 不完整样本删除还是填补4.1 什么时候删除4.2 什么时候填补5. 标签直接标签与代理标签5.1 两种标签5.2 人工标注 vs 自动标注6. 划分中的隐藏坑6.1 跨集合重复6.2 验证集 / 测试集磨损6.3 分布不一致与非平稳6.4 变换泄漏7. 划分前清单与汽车小例子8. 动手去重、填补、防泄漏划分9. 能力边界与常见误区9.1 适用边界9.2 常见误区10. 关键术语速查11. 延伸阅读12. 小结摘要第 18 篇讲了训练/验证/测试三分法但若数据本身不可靠再标准的划分也只是「把垃圾切成三份」。本文讲清数据集的类型、数量、质量与可信度不完整样本该删还是该补直接标签与代理标签怎么选以及划分前后最常见的隐藏坑重复、验证集磨损、分布错位、变换泄漏。继续用汽车重量与油耗示例。适合刚读完泛化入门的读者。1. 为什么「先划分」还不够三分法回答的是参数在哪学、超参在哪调、最终在哪验收。它回答不了另一类问题这批车的重量、标签靠不靠谱缺了 MPG 的行怎么办「高效」标签是真标记还是用别的字段凑的训练集和测试集是不是同一辆车出现了两次数据集Dataset是样本的集合模型再强也强不过它所见过的数据。划分之前先把家底摸清。本单元进度篇次聚焦第 18 篇泛化、过/欠拟合、三分法本篇19数据特性、标签、划分中的坑后续篇类别不平衡模型复杂度与损失曲线2. 数据特性四问2.1 类型是什么数据一张表里常见并存类型汽车示例专栏位置数值重量、排量、MPG第 1416 篇类别品牌、颜色、邮编第 17 篇文本 / 多媒体车评、外观图后续专题其他模型输出上游打分、Embedding进阶篇类型搞错把邮编当数值会从根上歪掉第 17 篇已强调过。2.2 数量样本够不够粗经验可训练参数越多通常需要越多样本。简单说法是样本数最好比参数量大一个数量级以上好模型往往还要更多。另一条实用规律大样本 少而精的特征常常胜过小样本 特征堆满。专栏里 7 辆车只够讲概念真实油耗模型需要远更大规模。小数据也不是绝路若能从同结构、大数据上预训练再适配有时也能出活——但那是迁移学习路线前提仍是标签与特征定义要对齐。2.3 数据质量质量不必玄学化用结果定义即可高质量数据帮助模型达成目标低质量数据阻碍目标。预测「是否高效」时若高效标签大量标反再漂亮的 AUC 也只是拟合错误标签。2.4 可信度可信度Reliability问的是标签错得多吗特征噪不噪过滤条件是否匹配任务做垃圾邮件检测时机器人流量可能该留做「真人搜索体验」时机器人查询往往该滤掉——同一类脏数据任务不同去留不同。3. 不可靠数据从哪来问题汽车例子典型后果缺值某行重量空白无法组成完整特征向量重复样本同一日志上传两次训练/测试泄漏分数虚高坏特征值3.43 录成 34.3回归被极端点拉歪第 16 篇坏标签重油车标成高效监督信号本身错了坏数据段某日传感器全坏局部切片系统性偏差大到一定规模的数据集几乎一定有异常值关键是用规则、单测、监控把离谱值标出来再决定删、改还是保留第 16 篇的异常值决策树仍然适用。4. 不完整样本删除还是填补完整样本每个要用的特征都有值。不完整样本至少一个必要特征缺失。不要直接拿缺特征的行去训线性/逻辑回归——向量长度对不上或被迫塞进无意义的默认值却不告诉模型。4.1 什么时候删除完整样本已经够训出有用模型某一列缺失极多且实验证明去掉该特征损失不大 → 可删列而不是硬补删除要小心别把重要但稀有的真实样本当垃圾扔掉。吃不准时可以做两套数据只删 vs 填补对比验证集表现。4.2 什么时候填补完整样本不够时常用填补Imputation用有依据的估计值补上而不是乱填。数值列常见均值、中位数有时序时也可用邻近时刻但补完后训练集仍要打乱避免按时间排序直接训练。填补值几乎总不如真值。更好的做法是加一列布尔标记例如weight_is_imputed让模型自己学「补出来的重量要不要少信一点」。标准化后均值常为 0缺值补 0 在 z-score 空间里往往对应「补均值」。5. 标签直接标签与代理标签监督信号来自标签Label。标签也必须最终能变成浮点数才能进损失计算。5.1 两种标签类型含义汽车例子直接标签与预测目标完全一致预测是否高效列里就有efficient代理标签与目标相近但不相同没有efficient用「是否上过节能榜」近似能直接用直接标签就别绕弯。代理标签永远是折中模型上限取决于「代理」和「真目标」有多贴。再举一个非车例子帮助直觉想预测「是否有自行车」若没有owns_bike用recently_bought_bike往往是还不错但不完美的代理——买车的人多半有车但也可能是送礼。专栏里用 MPG 阈值造「高效」标签时要想清楚你要的是「官方节能认证」还是「按 MPG 切一刀」后者是可复现的工程定义前者才是某些业务的直接标签。5.2 人工标注 vs 自动标注人工标注自动标注优点能做难任务倒逼标准写清楚便宜、可规模化风险贵、慢、人也会错需多人交叉上游模型错会系统性传染实用建议自己先标一小批如 1001000 条和众包/同事结果对照。不一致时先别默认自己一定对——尤其涉及主观判断时优先把标注说明书写清楚再重标。6. 划分中的隐藏坑第 18 篇讲了三分法该怎么用下面是分数「假好看」的常见原因。6.1 跨集合重复同一辆车或同一条日志既在训练集又在测试集等于开卷考试。划分后应检查并去掉验证/测试里与训练重复的样本。邮件反垃圾场景里同一封垃圾信复制多份最容易制造「训练测试双 99%」的幻觉。6.2 验证集 / 测试集磨损验证集可以反复用于调参但用得越多越像间接训练集置信度下降。测试集若也拿来天天调最后验收就失真。对策阶段性换新验证/测试数据或严格限制测试集动用次数。6.3 分布不一致与非平稳训练集全是夏季车况、测试全是冬季或用十年前的用户口味预测三年后的爆款——都属于第 18 篇提过的同分布 / 平稳假设被破坏。此时测试损失低只说明切到了相似切片不代表上线能泛化。6.4 变换泄漏更隐蔽的一种先对全表做StandardScaler.fit再划分训练/测试。测试信息通过均值方差漏进了预处理。正确顺序是先划分 → 只在训练集 fit 变换 → 再 transform 验证/测试第 15、17 篇的 Pipeline 思路正是为了堵住这类洞。7. 划分前清单与汽车小例子假设原始表如下含故意埋的坑idweightmpgnote13.5018正常23.6915正常33.5018与 id1 重复4NaN16缺重量534.316疑似录入错误62.3724正常建议处理顺序去重按业务键如车架号演示里可用weightmpg近似异常值34.3 核对后删除或改正缺值完整样本够则删行不够则中位数填补 weight_is_imputed确认标签定义回归用mpg分类用阈值后的efficient打乱再切训练/验证/测试检查各集合是否仍有重复、重量分布是否离谱8. 动手去重、填补、防泄漏划分importnumpyasnpimportpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromsklearn.imputeimportSimpleImputerfromsklearn.preprocessingimportStandardScalerfromsklearn.pipelineimportPipelinefromsklearn.linear_modelimportLinearRegressionfromsklearn.metricsimportmean_squared_error dfpd.DataFrame({weight:[3.50,3.69,3.50,np.nan,34.3,2.37,4.34,4.42,3.44,3.43],mpg:[18,15,18,16,16,24,15,14,18,16],})# 1) 去重dfdf.drop_duplicates()# 2) 粗滤明显录入错误业务阈值示例dfdf[df[weight].isna()|(df[weight]10)].copy()# 3) 划分先切出测试再切验证标签与特征一起切Xdf[[weight]]ydf[mpg]X_tv,X_test,y_tv,y_testtrain_test_split(X,y,test_size0.2,random_state0)X_train,X_val,y_train,y_valtrain_test_split(X_tv,y_tv,test_size0.25,random_state0)# 4) 只在训练集 fit中位数填补 标准化pipePipeline([(imputer,SimpleImputer(strategymedian)),(scaler,StandardScaler()),(model,LinearRegression()),])pipe.fit(X_train,y_train)print(val MSE:,mean_squared_error(y_val,pipe.predict(X_val)))print(test MSE:,mean_squared_error(y_test,pipe.predict(X_test)))# 注意没有在全表上先 fit scaler避免变换泄漏样本很少时分数会抖重点看流程去重 → 清洗 → 再划分 → 训练集上 fit。9. 能力边界与常见误区9.1 适用边界本篇面向表格型监督数据图像/语音的「质量」还有分辨率、采样率等维度原则相同先可信再划分。类别严重不平衡时「可信的标签」仍可能让准确率虚高——下一篇专门讲。9.2 常见误区误区正解有三分法就够了先保证数据可信再谈划分缺值一律删光可能删掉关键稀有样本可对比填补方案缺值乱填 0 且不告知模型至少标记是否为填补值代理标签当直接真相始终评估代理与真目标的差距验证集刷到完美再测一次测试集测试集也会磨损限制动用次数全表标准化后再划分典型泄漏必须先划分再 fit10. 关键术语速查术语一句话解释数据集用于训练与评估的样本集合样本 / 示例表中的一行一组特征 可选标签数据质量是否有助于达成建模目标可信度特征与标签可被信任的程度填补用合理估计补全缺失特征直接标签与预测目标完全一致的标签代理标签近似目标、但不完全相同的标签变换泄漏用到了验证/测试信息来 fit 预处理11. 延伸阅读资源适合看什么pandas 去重drop_duplicates用法sklearn SimpleImputer均值/中位数等填补sklearn Pipeline防止预处理泄漏专栏第 16 篇异常值识别与处理专栏第 18 篇泛化与三分法12. 小结三分法之前先问四件事类型对不对、样本够不够、质量帮不帮目标、数值与标签信不信。不完整样本在「删」与「补」之间权衡填补时最好带上标记列。标签能直接则直接代理要清楚近似误差。划分时盯死重复、验证/测试磨损、分布错位和变换泄漏。摸清家底 → 去重清洗 → 处理缺失与标签 → 打乱划分 → 仅训练集 fit 变换下一篇进入类别不平衡正负样本差几个数量级时为什么准确率会骗人以及该怎么评估与处理。系列导航上一篇【机器学习】18—— 泛化与过拟合下一篇预告类别不平衡数据集的评估与处理如果本篇对你有帮助欢迎点赞、收藏、关注博主机器学习专栏持续更新中下次更新不迷路。
延伸阅读

更多相关文章

2026/9/14 15:28:24

折叠屏 FoldSplitContainer 适配全解:悬停、折痕避让生产级实现

一、组件核心定位与鸿蒙7增强能力 FoldSplitContainer 是鸿蒙7 API26 专为折叠形态打造的顶层布局容器,统一接管折叠窄屏、完全展开大屏、半折悬停三种设备形态,相比旧版手动监听折叠角度、计算窗口分区方案,原生内置四大商用核心能力&#…

2026/9/10 8:23:01

选电子合同平台,别只盯着价格:四个隐形坑与避坑指南

去年秋天,我一个做零售连锁的朋友——叫他张总吧——在微信上跟我吐槽了一件事。 他们公司年初上了一个电子合同平台,选的时候比了五六家,最后挑了一个价格最低的。张总当时还挺得意,觉得自己会过日子,给公司省了一大笔…

2026/9/15 3:26:29

Python+Django智慧社区管理系统开发实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 3:26:29

Java CountDownLatch原理与多线程同步实践

1. CountDownLatch核心原理与使用场景CountDownLatch是Java并发包(java.util.concurrent)中一个非常实用的同步辅助类,它允许一个或多个线程等待其他线程完成操作后再继续执行。这个机制在需要协调多个线程执行顺序的场景中特别有用。1.1 核心工作机制CountDownLatc…

2026/9/15 3:26:29

ADC与CAN协同设计:嵌入式系统感知-通信时序契约实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 3:26:29

带暂停与重置的倒计时器:状态机与时间戳驱动的前端实现解析

我一直觉得自己对时间的掌控能力还行,直到我认真做一个带暂停与重置功能的倒计时器时,才意识到过去用的那些计时工具,其实都只解决了“倒着数”这个表面需求。真正好用的倒计时器,难点根本不在数字跳动,而在于它是否允…

2026/9/15 3:26:29

服务器故障排查清单:12种常见问题定位与处理全指南

做服务器运维这些年,我最怕听到的一句话不是“服务器挂了”,而是电话那头补一句“你自己看吧,我啥也没动”。半夜两点的机房告警,周末的微信轰炸,新手接手一台来历不明的服务器,面对的往往是一个黑盒加一堆…

2026/9/15 3:21:29

工业边缘计算机选型:100%国产化三核异构方案深度解析

2026 年了,工业边缘计算机到底该怎么选?聊聊 100% 国产化三核异构方案的取舍过去这一年,我集中跟进了三个工厂智能化改造项目,全部被甲方明确要求“核心硬件必须满足 100% 国产化”。一开始我也觉得,国产化不就是把 CP…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码