本周主要参与了cnn模型调参,并参与针对序列数据如何实现五井数据的合理运用
对于当前五井测一井的方法来说,数据来源是五个井数据打乱再进行训练,并不满足lstm模型所需的序列数据要求。
有如下几种思路
方法一:对每个深度加总或者取平均值处理,将现有数据集转化为正常的单组数据的序列,然后通过普通的时间序列模型进行训练
- 对于当前项目而言,可以对五口训练井根据先深度进行单井内排序,然后对每个深度对应的所有井数据进行加总或者取均值,可以得到一个单组数据。
深度 | 井1 | 井2 | 井3 | 井4 | 井5 |
---|---|---|---|---|---|
64m | 特征1-62 | 特征2-62 | 特征3-62 | 特征4-62 | 特征5-62 |
. . . | . . . | . . . | . . . | . . . | . . . |
150m | 特征1-150 | 特征2-150 | 特征3-150 | 特征4-150 | 特征5-150 |
对特征数据进行加总或平均处理可得到单组的序列数据用于训练模型
深度 | 井 |
---|---|
64m | 特征64 |
. . . | . . . |
150m | 特征150 |
方法二:先使用LSTM模型或者其他支持处理序列数据的模型
- 步骤一:数据标准化
训练LSTM 模型需要首先标准化你的数据,使用例如 Min-Max 或 Z-Score的方法来标准化数据。同时标准化时要注意将每口井的数据分开处理,避免相互干扰 - 步骤二:数据重塑,创建训练集数据
基于标准化后的数据,我们需要从时间序列数据中创建输入和输出数据,我们需要将时间序列转换为多个样本,其中每个样本具有固定的时间步长作为输入和一个或多个输出时间步长。我们可以使用Sliding Window来实现这个操作,具体示例如下: - 原始数据:
深度 井1 井2 井3 井4 井5 64m 特征1-62 特征2-62 特征3-62 特征4-62 特征5-62 . . . . . . . . . . . . . . . . . . 150m 特征1-150 特征2-150 特征3-150 特征4-150 特征5-150
将每组序列数据转化为输入输出对
如假设步长为5
输入\(:[特征1-62,特征1-64, ... ,特征1-70] \)
输出 : \( [特征1-72] \)
输入\(:[特征1-64,特征1-66, ... ,特征1-72] \)
输出 : \( [特征1-74] \)
. . . . . .
输入\(:[特征5-140,特征5-142, ... ,特征5-148] \)
输出 : \( [特征5-150] \)
最终数据集:
输入 | 输出 | ||||
---|---|---|---|---|---|
特征1-62 | 特征1-64 | 特征1-66 | 特征1-68 | 特征1-70 | 特征1-72 |
特征1-64 | 特征1-66 | 特征1-68 | 特征1-70 | 特征1-72 | 特征1-74 |
. . . | . . . | . . . | . . . | . . . | . . . |
特征5-140 | 特征5-142 | 特征5-144 | 特征5-146 | 特征5-148 | 特征5-150 |
根据此最终数据集便可直接使用LSTM模型进行训练。
参考GitHub项目:参考项目
除此之外还可以针对序列数据做一定的数据增强,如以下方法:
方案一:数据插补、窗口裁剪、添加噪声
参考代码:为特征向量数据(1D数组)叠加噪声实现数据增强
方案二:TimeGAN
参考代码:时间序列生成数据-TimeGAN
方案三:CTGAN
参考代码:CTGAN增强数据
参考文章:序列数据的数据增强方法综述
后续可以尝试通过数据增强并对整体数据再对方法一进行数据处理,或者采用方法二进行数据处理。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。