# 数据结构说明（只含合成示意）

归档中的 `hs300_preprocess` 脚本主要读取日级HDF5。真实数据不随包发布，其概念结构如下。

```text
YYYYMMDD_exchange/
├── x_part0.h5
├── x_part1.h5
└── yfw.h5
```

特征文件常见字段：

| 字段 | 示例形状 | 含义 |
|---|---:|---|
| `x` | `N × F_part` 或 `S × T × F_part` | 因子数值，允许NaN |
| `x_names` | `F_part` | 因子名称 |
| `symbol` | `N` 或 `S` | 证券标识 |
| `datetime` | `N` 或 `S × T` | 时间编码 |
| `meta/symbol_start_idx` | `S` | 行式存储中每只证券的起点 |
| `meta/symbol_end_idx` | `S` | 行式存储中每只证券的终点 |

标签文件常见字段：

| 字段 | 示例形状 | 含义 |
|---|---:|---|
| `y` | `N × K` 或 `S × T × K` | 多个预测目标 |
| `y_names` | `K` | 标签名称 |
| `w` | `N` 或 `S × T` | 样本权重 |

合成示例：

```text
symbol = [101, 101, 202, 202]
time   = [93000, 93003, 93000, 93003]
X = [[0.2, NaN], [0.1, 0.5], [-0.2, 0.3], [NaN, 0.4]]
y = [0.01, -0.02, 0.03, 0.00]
w = [1.0, 1.0, 0.8, 0.8]
```

使用源码时必须根据实际HDF5的schema选择行式或三维式读取方式，并把脚本中的 `/intern...` 历史路径改成新电脑上的数据位置。

