Lecture 03 学习讲义
正文
工具
按问题查找
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?')