第3章 数据采集与预处理:传感器与数据采集系统、数据清洗、数据标准化与归一化
大家好,我是你们的老朋友。今天咱们聊聊工艺优化里最基础、也最容易被忽视的一环——数据采集与预处理。
说实话,我见过太多项目,算法模型选得再好,最后却栽在了数据上。为什么?因为工厂里的数据,远没有教科书上那么干净。你想想看,传感器会漂移,信号会受干扰,采集系统偶尔抽风,这都是家常便饭。
所以,这一章我带你走一遍数据从“原始信号”到“可用数据”的全流程。说白了,就是教你怎么把一堆“垃圾”变成“黄金”。
3.1 传感器与数据采集系统
传感器是什么?它就是工艺系统的“五官”。温度、压力、流量、振动……这些物理量,都得靠传感器转成电信号,我们才能读懂。
我个人习惯把数据采集系统分成三层:
- 感知层:传感器本体。比如热电偶、压力变送器、加速度计。
- 传输层:信号调理、模数转换(ADC)、现场总线(如Modbus、Profibus)。
- 存储层:PLC、DCS、或者边缘计算网关,最终落到数据库里。
这里有个坑,我必须要提醒你。我在项目中遇到过,一个车间的温度传感器用的是PT100铂电阻,另一个车间用的是K型热电偶。两个传感器精度不同,响应时间也不同。结果数据融合的时候,温度曲线出现了诡异的“锯齿”。
嗯,这里还要提一下采样频率。根据奈奎斯特定理,采样频率至少是信号最高频率的两倍。但实际工程中,我建议取5-10倍。比如一个温度变化周期是10秒,那采样频率至少2秒一次,保险起见我通常设到0.5秒一次。
3.2 数据清洗:缺失值与异常值处理
数据进了系统,你以为就万事大吉了?太天真了。原始数据里,缺失值和异常值就像地雷一样,随时可能炸掉你的模型。
3.2.1 缺失值处理
缺失值的原因很多:传感器掉线、通信中断、存储故障……我见过最离谱的一次,是因为车间里一只老鼠咬断了网线,导致一整天的数据全是空值。
处理缺失值,常用的方法有这几种:
| 方法 | 适用场景 | 我的建议 |
|---|---|---|
| 删除法 | 缺失比例极低(<5%) | 简单粗暴,但会丢失信息 |
| 均值/中位数填充 | 数据分布稳定,无明显趋势 | 快速,但会降低方差 |
| 前向/后向填充 | 时间序列数据,变化缓慢 | 我常用,比如温度、压力 |
| 插值法 | 数据有规律,如线性或多项式 | 精度较高,但计算量大 |
| 模型预测填充 | 缺失值较多,且与其他特征相关 | 最后手段,慎用 |
举个例子,假设你有一段温度数据,第10秒和第11秒缺失了:
# 前向填充示例(Python伪代码)
data['temperature'].fillna(method='ffill', inplace=True)
# 结果:第10秒和第11秒的值,等于第9秒的值
3.2.2 异常值处理
异常值,就是那些“离谱”的数据点。比如一个压力传感器,正常范围是0-10MPa,突然蹦出一个100MPa。这明显是传感器坏了,不是工艺真的发生了爆炸。
怎么识别异常值?我常用的方法:
- 3σ原则:数据服从正态分布时,超过均值±3倍标准差的值,视为异常。
- 箱线图法:超过四分位距(IQR)1.5倍的值,视为异常。这个方法对非正态分布更鲁棒。
- 领域知识法:比如你知道某个工艺参数不可能超过某个物理极限,那超过的直接干掉。
处理异常值,我一般分三步走:
- 标记:先别急着删,把异常值标记出来,看看是不是有规律。
- 分析:是传感器故障?还是工艺真的出现了异常工况?
- 处理:如果是传感器问题,直接删除或填充;如果是真实异常工况,保留并单独建模。
3.3 数据标准化与归一化
数据清洗完了,接下来就是“对齐”工作。为什么需要标准化和归一化?
你想想看,温度是0-100℃,压力是0-10MPa,流量是0-1000m³/h。这三个特征的量纲完全不同。如果你直接拿它们去训练模型,那个“流量”特征因为数值大,会主导模型的学习,而“压力”特征几乎被忽略。这显然不合理。
标准化和归一化,就是把不同量纲的数据,映射到同一个尺度上。
3.3.1 归一化(Min-Max Scaling)
把数据缩放到[0, 1]区间。公式很简单:
X_norm = (X - X_min) / (X_max - X_min)
适合场景:数据有明确的上下界,比如温度、压力、液位。我习惯在神经网络模型里用归一化,因为激活函数(如Sigmoid)对输入范围敏感。
3.3.2 标准化(Z-score Scaling)
把数据变成均值为0,标准差为1的分布。公式:
X_std = (X - μ) / σ
适合场景:数据分布近似正态,或者有异常值存在。标准化对异常值的鲁棒性比归一化好。我个人在回归模型、SVM、PCA里更喜欢用标准化。
| 方法 | 输出范围 | 对异常值敏感度 | 常用模型 |
|---|---|---|---|
| 归一化 | [0, 1] | 高 | 神经网络、KNN |
| 标准化 | 无固定范围 | 低 | 线性回归、SVM、PCA |
3.4 本章知识体系
说了这么多,我画了一张图,帮你把这一章的核心逻辑串起来。你看一眼就明白了:
这张图很直白。从左到右,数据从传感器出来,经过清洗(去掉脏数据),再经过标准化(统一尺度),最后才能喂给模型。每一步都不可或缺。
好了,这一章的内容就到这里。数据预处理是个细致活,急不得。你只要记住一句话:垃圾进,垃圾出(Garbage In, Garbage Out)。把数据搞干净了,你的模型就成功了一半。