File size: 1,579 Bytes
216004d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python3
"""诊断外部测试集: 每个域的样本数 / 标签纯度 / 常数预测基线。"""
import sys
import numpy as np
import torch

sys.path.insert(0, "/work/liuyuanjie/headless")
sys.path.insert(0, "/work/liuyuanjie/headless/tests")
from run_lm4_wave import (build_feature_matrix, build_windows, assign_domains)

# 训练年边界
t1, d1, F1, ok1 = build_feature_matrix("/work/liuyuanjie/headless/data/wave",
                                       bands=13, use_wfr=True, use_lshell=True)
X1, yl1 = build_windows(t1, d1, F1, ok1)
y1, qs = assign_domains(yl1, 6)
print("训练年 2015 边界:", [round(float(q), 2) for q in qs])
print("训练年 2015 每域样本:", np.bincount(y1, minlength=6).tolist())

# 测试年 (沿用边界)
t2, d2, F2, ok2 = build_feature_matrix("/work/liuyuanjie/headless/data/wave2016",
                                       bands=13, use_wfr=True, use_lshell=True)
X2, yl2 = build_windows(t2, d2, F2, ok2)
y2, _ = assign_domains(yl2, 6, qs=qs)
print("\n测试年 2016 每域样本 (沿用 2015 边界):", np.bincount(y2, minlength=6).tolist())
print("测试年 log10(density) 范围:", round(float(yl2.min()), 2), "~", round(float(yl2.max()), 2))
print("训练年 log10(density) 范围:", round(float(yl1.min()), 2), "~", round(float(yl1.max()), 2))

# 关键检查: 每个 dd 的子集是否只含 dd 标签 (当然), 以及"常数预测"能拿多少
print("\n每个域子集的样本数 (若某域样本极少, 其准确率噪声极大):")
for dd in range(6):
    n = int((y2 == dd).sum())
    print(f"  D{dd}: {n} 条")