原始训练集(30个井点)
→ 数据预处理(清除无效值较多的属性,清除井点与地震在属性的统计指标上不符的属性)
→ PCA降维
→ 使用 Ridge、Lasso 和 Sigmoid 拟合主成分与砂厚的关系;仅保留三模型预测最大差不超过 5m 的候选井,并以三模型均值作为虚拟井砂厚,使样本分布均衡
→ 如果样本依旧不均衡,添加随机扰动,使样本均衡
→ 根据自相关性将属性分组
→ 遍历从多个组中选三个组的属性组合(如果组里只有一个属性,选这个属性即可;有多个属性,则随机选择)
→ 将这三个属性作为输入,训练组合数 x 参数网格大小个SVR模型,取最好的五个,求平均
按顺序执行三个脚本,形成完整管线。
python scripts/well_data_preprocess.py \
--input data/target/well_horizon.xlsx \
--sheet "Sand Thickness" \
--horizons-to-delete <要删除的层位> \
--iqr-factor 3.0| 参数 | 默认值 | 说明 |
|---|---|---|
--input |
data/target/well_horizon.xlsx |
原始井点 xlsx 路径 |
--sheet |
Sand Thickness |
Sheet 名称 |
--horizons-to-delete |
(空) | 要删除的层位列表(可多个) |
--wells-to-delete |
(空) | 要删除的井点列表 |
--iqr-factor |
3.0 |
IQR 离群值倍数 |
--output-name |
well_horizon_processed.xlsx |
输出文件名 |
输出:scripts/output/well_data_preprocess_YYYYMMDD_HHMMSS/well_horizon_processed.xlsx + 日志
python scripts/make_pesudo_sample.py \
--seismic data/target/<层位名> \
--wells scripts/output/<脚本1输出目录>/well_horizon_processed.xlsx \
--surface <层位名>| 参数 | 默认值 | 说明 |
|---|---|---|
--seismic |
(必填) | 地震属性 Surface 文件路径 |
--wells |
(必填) | 预处理后的井点 xlsx 路径(脚本 1 产出) |
--surface |
(必填) | 目标层位名称 |
--expansion-factor |
1.5 |
工区扩展比例 |
--pca-variance |
0.9 |
PCA 保留方差阈值 |
--n-clusters |
2 |
GMM 聚类数 |
--sample-rows |
40 |
采样网格行数 |
--sample-cols |
40 |
采样网格列数 |
--max-samples-per-bin |
30 |
每砂厚区间最大虚拟井数 |
输入依赖:脚本 1 的 well_horizon_processed.xlsx
输出:scripts/output/make_pesudo_sample_YYYYMMDD_HHMMSS/<层位名>_optimized_pseudo_wells.csv + 图件 + 中间数据
python scripts/predict_sand_thickness.py \
--seismic data/target/<层位名> \
--wells scripts/output/<脚本1输出目录>/well_horizon_processed.xlsx \
--pseudo-wells scripts/output/<脚本2输出目录>/<层位名>_optimized_pseudo_wells.csv \
--surface <层位名>| 参数 | 默认值 | 说明 |
|---|---|---|
--seismic |
(必填) | 地震属性 Surface 文件路径 |
--wells |
(必填) | 预处理后的井点 xlsx 路径(脚本 1 产出) |
--pseudo-wells |
(必填) | 虚拟井 csv 路径(脚本 2 产出) |
--surface |
(必填) | 目标层位名称 |
--corr-threshold |
0.9 |
特征相关性分组阈值 |
--top-models |
5 |
集成模型数量 |
输入依赖:脚本 1 的 well_horizon_processed.xlsx + 脚本 2 的 optimized_pseudo_wells.csv
输出:scripts/output/predict_sand_thickness_YYYYMMDD_HHMMSS/SVR_Ensemble_Prediction.txt(可直接导入 Petrel)+ CSV + 图件
无论是数据扩容还是模型选择,都只能造成一些软边界的改变,例如原来预测薄砂的地方经过方法迭代可以预测得厚一点,但是无法影响相与相之间的硬边界,这种现象的本质,是训练集样本数的不足和样本空间位置过于集中,导致监督模型的预测无法泛化,使原始地震属性之间的数据相似度占据了最终结果的主导地位。