Lecture 03全讲收束:你的“新样本”究竟新在哪里? · 实现代码
全讲收束:你的“新样本”究竟新在哪里? · 实现代码
按问题继续
采集批次泄漏、随机/分组划分、两个基线的实测对照
展开完整实现代码
# Writable ephemeral workspace for detached readonly cloud runs.
import os, tempfile
os.chdir(tempfile.mkdtemp(prefix='lec03_lab24_'))
import numpy as np
r=np.random.default_rng(24); groups=np.repeat(np.arange(12),20); x=r.normal(size=len(groups)); offsets=r.normal(0,3,12); y=.7*x+offsets[groups]+r.normal(0,.25,len(x))
random_test=np.zeros(len(x),bool); random_test[r.permutation(len(x))[:60]]=True
group_test=groups>=9
def compare(test):
train=~test; means={g:y[train&(groups==g)].mean() for g in np.unique(groups[train])}
memorized=np.array([means.get(g,y[train].mean()) for g in groups[test]])
X=np.c_[x,np.ones(len(x))]; w=np.linalg.lstsq(X[train],y[train],rcond=None)[0]
rmse=lambda p:float(np.sqrt(np.mean((p-y[test])**2)))
return {'ntrain':int(train.sum()),'ntest':int(test.sum()),'overlapping_groups':len(set(groups[train])&set(groups[test])),'batch_mean_RMSE':rmse(memorized),'x_only_RMSE':rmse(X[test]@w)}
print('random sample split',compare(random_test)); print('new batch split',compare(group_test))
assert compare(group_test)['overlapping_groups']==0
print('claim tested: does low random-split error predict performance in unseen acquisition groups?')