import%20marimo%0A%0A__generated_with%20%3D%20%220.24.0%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0Awith%20app.setup%3A%0A%20%20%20%20import%20time%0A%0A%20%20%20%20import%20japanize_matplotlib%20%20%23%20noqa%3A%20F401%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20import%20seaborn%20as%20sns%0A%20%20%20%20import%20torch%0A%20%20%20%20import%20torch.nn%20as%20nn%0A%20%20%20%20import%20torch.nn.functional%20as%20F%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20TabPFN%20%E3%82%92%E3%82%B9%E3%82%AF%E3%83%A9%E3%83%83%E3%83%81%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%20%E2%80%94%20%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%20Transformer%20%E3%81%A7%E8%A1%A8%E5%BD%A2%E5%BC%8F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%20in-context%20%E4%BA%88%E6%B8%AC%E3%81%99%E3%82%8B%0A%0A%20%20%20%20TabPFN%EF%BC%88Prior-data%20Fitted%20Network%EF%BC%89%E3%81%AF%E3%80%81**%E8%A1%A8%E5%BD%A2%E5%BC%8F%E3%83%87%E3%83%BC%E3%82%BF%E7%94%A8%E3%81%AB%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%20Transformer**%20%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%E9%80%9A%E5%B8%B8%E3%81%AE%E5%8B%BE%E9%85%8D%E3%83%96%E3%83%BC%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%EF%BC%88GBDT%EF%BC%89%E3%81%AF%E3%80%81%E4%B8%8E%E3%81%88%E3%82%89%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%94%E3%81%A8%E3%81%AB%E6%9C%A8%E3%82%92%E8%82%B2%E3%81%A6%E3%81%A6%E3%80%8C%E5%AD%A6%E7%BF%92%E3%80%8D%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%E4%B8%80%E6%96%B9%20TabPFN%20%E3%81%AF%E3%80%81%E3%81%82%E3%82%89%E3%81%8B%E3%81%98%E3%82%81**%E5%A4%A7%E9%87%8F%E3%81%AE%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%EF%BC%88prior%EF%BC%89%E3%81%A7%201%20%E5%9B%9E%E3%81%A0%E3%81%91%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92**%E3%81%97%E3%81%A6%E3%81%8A%E3%81%8D%E3%80%81%0A%20%20%20%20%E6%9C%AC%E7%95%AA%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%81%AF**%E9%87%8D%E3%81%BF%E3%82%92%E4%B8%80%E5%88%87%E6%9B%B4%E6%96%B0%E3%81%9B%E3%81%9A%E3%80%81%E9%A0%86%E4%BC%9D%E6%92%AD%EF%BC%88forward%20pass%EF%BC%89%E3%81%A0%E3%81%91%E3%81%A7%E4%BA%88%E6%B8%AC**%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%81%A4%E3%81%BE%E3%82%8A%E3%80%8C%E5%AD%A6%E7%BF%92%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%9D%E3%81%AE%E3%82%82%E3%81%AE%E3%82%92%20Transformer%20%E3%81%AE%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%A8%E3%81%97%E3%81%A6%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E7%99%BA%E6%83%B3%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E3%81%93%E3%81%AE%20notebook%20%E3%81%A7%E3%81%AF%20%5B%60automl%2FnanoTabPFN%60%5D(https%3A%2F%2Fgithub.com%2Fautoml%2FnanoTabPFN)%20%E3%81%AE%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%81%AB%E5%BE%93%E3%81%84%E3%80%81%0A%20%20%20%20TabPFN%20%E3%82%92%20PyTorch%20%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%A9%E3%83%83%E3%83%81%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%80%82prior%20%E3%82%82%20notebook%20%E5%86%85%E3%81%A7%E7%94%9F%E6%88%90%E3%81%97%E3%81%A6%E8%87%AA%E5%B7%B1%E5%AE%8C%E7%B5%90%E3%81%95%E3%81%9B%E3%80%81%E5%8E%9F%E7%90%86%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%81%9D%E3%81%AE%E3%81%86%E3%81%88%E3%81%A7**%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%81%AE%E5%85%AC%E5%BC%8F%20TabPFN%EF%BC%88%60tabpfn%3D%3D2.2.1%60%EF%BC%89%E3%82%92%E5%90%8C%E3%81%98%E6%9D%A1%E4%BB%B6%E3%81%A7%E8%B5%B0%E3%82%89%E3%81%9B%E3%81%A6%E6%AF%94%E8%BC%83**%E3%81%97%E3%80%81%0A%20%20%20%20%E8%87%AA%E5%89%8D%E5%AE%9F%E8%A3%85%E3%81%A8%E3%81%AE%E5%88%B0%E9%81%94%E7%82%B9%E3%81%AE%E5%B7%AE%EF%BC%9D%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%81%A8%20prior%20%E3%81%AE%E8%B3%AA%E3%81%AE%E5%B7%AE%E3%82%92%E6%98%8E%E3%82%89%E3%81%8B%E3%81%AB%E3%81%99%E3%82%8B%E3%80%82%E6%AF%94%E8%BC%83%E3%81%AE%E3%83%99%E3%83%BC%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AB%E3%81%AF%0A%20%20%20%20LightGBM%20%E3%81%A8%20scikit-learn%20%E3%82%82%E7%94%A8%E3%81%84%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E9%A1%8C%E6%9D%90%E3%81%AF%20seaborn%20%E3%81%AE%20diamonds%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%EF%BC%8853%2C940%20%E8%A1%8C%EF%BC%89%E3%81%A7%E3%80%81price%20%E3%82%92%E5%9B%9E%E5%B8%B0%E3%83%BB%E5%88%86%E4%BD%8D%E3%82%AF%E3%83%A9%E3%82%B9%E5%88%86%E9%A1%9E%E3%81%AE%E4%B8%A1%E9%9D%A2%E3%81%8B%E3%82%89%E4%BA%88%E6%B8%AC%E3%81%97%E3%80%81%0A%20%20%20%20%E5%85%AC%E5%BC%8F%20TabPFN%E3%83%BBLightGBM%20%E7%AD%89%E3%81%A8%E6%AF%94%E8%BC%83%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%86%8D%E7%8F%BE%E6%80%A7%E3%81%A8%20device%0A%0A%20%20%20%20seed%20%E3%82%92%E5%9B%BA%E5%AE%9A%E3%81%97%E3%80%81CUDA%20%E3%81%8C%E4%BD%BF%E3%81%88%E3%82%8C%E3%81%B0%20GPU%E3%80%81%E3%81%AA%E3%81%91%E3%82%8C%E3%81%B0%20CPU%20%E3%82%92%E9%81%B8%E3%81%B6%E3%80%82%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E6%84%8F%E5%9B%B3%E7%9A%84%E3%81%AB%E5%B0%8F%E3%81%95%E3%81%8F%E8%A8%AD%E8%A8%88%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%0A%20%20%20%20CPU%20%E3%81%A7%E3%82%82%EF%BC%88%E9%81%85%E3%81%84%E3%81%8C%EF%BC%89%E5%AE%9F%E8%A1%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%E4%BB%A5%E9%99%8D%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%AF%E3%81%93%E3%81%AE%20%60device%60%20%E3%81%A8%20%60seed%60%20%E3%82%92%E5%85%B1%E6%9C%89%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20seed%20%3D%200%0A%20%20%20%20np.random.seed(seed)%0A%20%20%20%20torch.manual_seed(seed)%0A%20%20%20%20if%20torch.cuda.is_available()%3A%0A%20%20%20%20%20%20%20%20torch.cuda.manual_seed_all(seed)%0A%20%20%20%20%20%20%20%20device%20%3D%20torch.device(%22cuda%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20device%20%3D%20torch.device(%22cpu%22)%0A%20%20%20%20print(f%22selected%20device%3A%20%7Bdevice%7D%22)%0A%20%20%20%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%22item%22%3A%20%5B%22torch%22%2C%20%22device%22%2C%20%22seed%22%5D%2C%20%22value%22%3A%20%5Btorch.__version__%2C%20str(device)%2C%20seed%5D%7D%0A%20%20%20%20)%0A%20%20%20%20return%20device%2C%20seed%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20PFN%20%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B%20%E2%80%94%20%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%8C%E3%80%8C%E8%BF%91%E4%BC%BC%E3%83%99%E3%82%A4%E3%82%BA%E6%8E%A8%E8%AB%96%E3%80%8D%E3%81%AB%E3%81%AA%E3%82%8B%0A%0A%20%20%20%20PFN%20%E3%81%AE%E5%AD%A6%E7%BF%92%E7%9B%AE%E6%A8%99%E3%81%AF%E3%80%8Cprior%EF%BC%88%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E7%94%9F%E6%88%90%E8%A6%8F%E5%89%87%EF%BC%89%E3%81%8B%E3%82%89%E5%BC%95%E3%81%84%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E3%80%81%0A%20%20%20%20train%20%E9%83%A8%E5%88%86%E3%82%92%E6%9D%A1%E4%BB%B6%E3%81%A8%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%20test%20%E9%83%A8%E5%88%86%E3%81%AE%E3%83%A9%E3%83%99%E3%83%AB%E3%82%92%E5%BD%93%E3%81%A6%E3%82%8B%E3%80%8D%E3%81%93%E3%81%A8%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%82%92%E5%A4%A7%E9%87%8F%E3%81%AE%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%A7%0A%20%20%20%20%E6%9C%80%E5%B0%8F%E5%8C%96%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%20prior%20%E3%81%AE%E3%82%82%E3%81%A8%E3%81%A7%E3%81%AE**%E4%BA%8B%E5%BE%8C%E4%BA%88%E6%B8%AC%E5%88%86%E5%B8%83**%20%24p(y_%5Ctext%7Btest%7D%5Cmid%20x_%5Ctext%7Btest%7D%2C%20D_%5Ctext%7Btrain%7D)%24%0A%20%20%20%20%E3%82%92%E8%BF%91%E4%BC%BC%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82%E6%95%B0%E5%BC%8F%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%A8%E3%80%81prior%20%E3%82%92%20%24p(D)%24%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%0A%20%20%20%20%24D%3D%5C%7B(x_i%2Cy_i)%5C%7D%24%20%E3%81%A8%E3%81%97%E3%81%A6%E3%80%81%E6%AC%A1%E3%81%AE%E6%9C%9F%E5%BE%85%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC%E3%82%92%E6%9C%80%E5%B0%8F%E5%8C%96%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Cmathcal%7BL%7D%20%3D%20%5Cmathbb%7BE%7D_%7BD%5Csim%20p(D)%7D%5CBig%5B-%5Csum_%7Bi%5Cin%5Ctext%7Btest%7D%7D%20%5Clog%20q_%5Ctheta%5Cbig(y_i%20%5Cmid%20x_i%2C%20D_%5Ctext%7Btrain%7D%5Cbig)%5CBig%5D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%E3%81%93%E3%81%93%E3%81%A7%20%24q_%5Ctheta%24%20%E3%81%8C%20Transformer%20%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E6%9C%80%E9%81%A9%E8%A7%A3%E3%81%AF%E7%9C%9F%E3%81%AE%E4%BA%8B%E5%BE%8C%E4%BA%88%E6%B8%AC%0A%20%20%20%20%24p(y%5Cmid%20x%2C%20D_%5Ctext%7Btrain%7D)%24%20%E3%81%AB%E4%B8%80%E8%87%B4%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E5%AD%A6%E7%BF%92%E5%BE%8C%E3%81%AE**%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%AF%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BE%E8%BF%91%E4%BC%BC%E3%83%99%E3%82%A4%E3%82%BA%E6%8E%A8%E8%AB%96**%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82%0A%20%20%20%20%E6%9C%AC%E7%95%AA%E3%83%87%E3%83%BC%E3%82%BF%EF%BC%88diamonds%EF%BC%89%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E9%87%8D%E3%81%BF%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E3%80%8Cfit%E3%80%8D%E3%81%A8%E3%81%AF%0A%20%20%20%20%E5%8D%98%E3%81%AB%20train%20%E8%A1%8C%E3%82%92%E6%96%87%E8%84%88%EF%BC%88context%EF%BC%89%E3%81%A8%E3%81%97%E3%81%A6%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%AB%E9%A3%9F%E3%82%8F%E3%81%9B%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E4%BB%96%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E8%A8%AD%E5%AE%9A%E5%80%A4%0A%0A%20%20%20%20nanoTabPFN%20%E3%81%AB%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A6%E5%B0%8F%E3%81%95%E3%82%81%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%AB%E3%81%99%E3%82%8B%E3%80%82%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E6%AC%A1%E5%85%83%2096%E3%80%81%E6%B3%A8%E6%84%8F%E3%83%98%E3%83%83%E3%83%89%204%E3%80%81MLP%20%E9%9A%A0%E3%82%8C%20192%E3%80%81%0A%20%20%20%20%E5%B1%A4%E6%95%B0%203%E3%80%82%E3%83%A9%E3%83%99%E3%83%AB%E3%81%AF%E9%80%A3%E7%B6%9A%E5%80%A4%E3%82%92%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%94%E3%81%A8%E3%81%AE**%E5%88%86%E4%BD%8D%E3%83%93%E3%83%B3**%20%24K%3D16%24%20%E3%81%AB%E9%9B%A2%E6%95%A3%E5%8C%96%E3%81%97%E3%81%A6%E6%89%B1%E3%81%86%EF%BC%88%E5%BE%8C%E8%BF%B0%EF%BC%89%E3%80%82%0A%20%20%20%20%E3%83%93%E3%83%B3%E6%95%B0%20%24K%24%20%E3%81%AF%E5%9B%9E%E5%B8%B0%E3%81%AE%E5%88%86%E8%A7%A3%E8%83%BD%E3%82%92%E6%B1%BA%E3%82%81%E3%82%8B%E9%87%8D%E8%A6%81%E3%81%AA%E8%A8%AD%E8%A8%88%E5%80%A4%E3%81%A7%E3%80%81%E5%88%9D%E7%89%88%E3%81%AE%20%24K%3D10%24%20%E3%81%8B%E3%82%89%E5%A2%97%E3%82%84%E3%81%97%E3%81%9F%EF%BC%88%E7%90%86%E7%94%B1%E3%81%AF%0A%20%20%20%20%E5%BE%8C%E5%8D%8A%E3%81%AE%E3%80%8C%E9%9B%A2%E6%95%A3%E5%8C%96%E3%83%95%E3%83%AD%E3%82%A2%E3%80%8D%E3%81%A7%E5%AE%9A%E9%87%8F%E7%9A%84%E3%81%AB%E8%AA%AC%E6%98%8E%E3%81%99%E3%82%8B%EF%BC%89%E3%80%82%0A%0A%20%20%20%20prior%20%E3%81%AE%201%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AF%E8%A1%8C%E6%95%B0%20%60ROWS%60%E3%80%81%E6%9C%80%E5%A4%A7%E7%89%B9%E5%BE%B4%E6%95%B0%20%60MAXF%60%20%E3%81%A8%E3%81%99%E3%82%8B%E3%80%82train%20%E3%81%A8%20test%20%E3%81%AE%E5%88%86%E5%89%B2%E4%BD%8D%E7%BD%AE%E3%81%AF%0A%20%20%20%20**%E5%AD%A6%E7%BF%92%E4%B8%AD%E3%81%AB%E3%83%90%E3%83%83%E3%83%81%E3%81%94%E3%81%A8%E3%81%AB%E5%8C%BA%E9%96%93%20%60%5BSPLIT_MIN%2C%20SPLIT_MAX%5D%60%20%E3%81%8B%E3%82%89%E4%B8%80%E6%A7%98%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB**%E3%81%99%E3%82%8B%E3%80%82%E5%88%86%E5%89%B2%E4%BD%8D%E7%BD%AE%E3%82%92%E5%9B%BA%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%A8%0A%20%20%20%20%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8C%E7%89%B9%E5%AE%9A%E3%81%AE%20context%20%E9%95%B7%E3%81%AB%E9%81%8E%E9%81%A9%E5%90%88%E3%81%97%E3%80%81%E6%8E%A8%E8%AB%96%E6%99%82%E3%81%AB%E7%95%B0%E3%81%AA%E3%82%8B%E8%A1%8C%E6%95%B0%EF%BC%88diamonds%20%E3%81%A7%E3%81%AF%201024%20%E8%A1%8C%EF%BC%89%E3%81%B8%E5%A4%96%E6%8C%BF%E3%81%97%E3%81%AB%E3%81%8F%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%60SPLIT_DEMO%60%20%E3%81%AF%E5%8F%AF%E8%A6%96%E5%8C%96%E3%83%BB%E5%81%A5%E5%85%A8%E6%80%A7%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%A7%E4%BD%BF%E3%81%86%E4%BB%A3%E8%A1%A8%E7%9A%84%E3%81%AA%E5%9B%BA%E5%AE%9A%E5%88%86%E5%89%B2%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20E_SIZE%20%3D%2096%0A%20%20%20%20N_HEADS%20%3D%204%0A%20%20%20%20MLP_HIDDEN%20%3D%20192%0A%20%20%20%20N_LAYERS%20%3D%203%0A%20%20%20%20N_BINS%20%3D%2016%0A%20%20%20%20ROWS%20%3D%20224%0A%20%20%20%20MAXF%20%3D%2010%0A%20%20%20%20SPLIT_MIN%20%3D%2096%0A%20%20%20%20SPLIT_MAX%20%3D%20160%0A%20%20%20%20SPLIT_DEMO%20%3D%20128%0A%20%20%20%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22hyperparameter%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22embedding_size%22%2C%20%22num_heads%22%2C%20%22mlp_hidden%22%2C%20%22num_layers%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22num_bins(K)%22%2C%20%22rows_per_dataset%22%2C%20%22max_features%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22split_min%22%2C%20%22split_max%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20E_SIZE%2C%20N_HEADS%2C%20MLP_HIDDEN%2C%20N_LAYERS%2C%20N_BINS%2C%20ROWS%2C%20MAXF%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPLIT_MIN%2C%20SPLIT_MAX%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20E_SIZE%2C%0A%20%20%20%20%20%20%20%20MAXF%2C%0A%20%20%20%20%20%20%20%20MLP_HIDDEN%2C%0A%20%20%20%20%20%20%20%20N_BINS%2C%0A%20%20%20%20%20%20%20%20N_HEADS%2C%0A%20%20%20%20%20%20%20%20N_LAYERS%2C%0A%20%20%20%20%20%20%20%20ROWS%2C%0A%20%20%20%20%20%20%20%20SPLIT_DEMO%2C%0A%20%20%20%20%20%20%20%20SPLIT_MAX%2C%0A%20%20%20%20%20%20%20%20SPLIT_MIN%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%20(1)%20%E7%89%B9%E5%BE%B4%E9%87%8F%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%80%E3%81%A8%E7%9B%AE%E7%9A%84%E5%A4%89%E6%95%B0%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%80%0A%0A%20%20%20%20%E5%85%A5%E5%8A%9B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AF%E5%BD%A2%E7%8A%B6%20%24(B%2C%20R%2C%20C)%24%20%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%20%24B%24%20%E3%81%AF%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E3%83%90%E3%83%83%E3%83%81%E6%95%B0%E3%80%81%0A%20%20%20%20%24R%24%20%E3%81%AF%E8%A1%8C%E6%95%B0%E3%80%81%24C%24%20%E3%81%AF%E7%89%B9%E5%BE%B4%E5%88%97%E6%95%B0%E3%80%82%E4%BB%A5%E9%99%8D%20%24E%24%20%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E6%AC%A1%E5%85%83%E3%81%A8%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20**FeatureEncoder**%20%E3%81%AF%E5%90%84%E7%89%B9%E5%BE%B4%EF%BC%88%E3%82%B9%E3%82%AB%E3%83%A9%E3%83%BC%EF%BC%89%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%80%82%E3%81%BE%E3%81%9A**train%20%E8%A1%8C%E3%81%A0%E3%81%91**%E3%81%A7%E8%A8%88%E7%AE%97%E3%81%97%E3%81%9F%0A%20%20%20%20%E5%B9%B3%E5%9D%87%E3%83%BB%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%E3%81%A7%E5%90%84%E5%88%97%E3%82%92%20z%20%E6%AD%A3%E8%A6%8F%E5%8C%96%E3%81%97%E3%80%81%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%20%24%5B-100%2C%20100%5D%24%20%E3%81%AB%20clip%20%E3%81%97%E3%81%A6%E3%81%8B%E3%82%89%20%60Linear(1%2C%20E)%60%20%E3%81%AB%E9%80%9A%E3%81%99%E3%80%82%0A%20%20%20%20train%20%E8%A1%8C%E3%81%A0%E3%81%91%E3%81%A7%E6%AD%A3%E8%A6%8F%E5%8C%96%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%80%81test%20%E8%A1%8C%E3%81%AE%E6%83%85%E5%A0%B1%EF%BC%88%E4%BA%88%E6%B8%AC%E5%AF%BE%E8%B1%A1%EF%BC%89%E3%82%92%E7%B5%B1%E8%A8%88%E9%87%8F%E3%81%AB%E6%B7%B7%E5%85%A5%E3%81%95%E3%81%9B%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%E5%87%BA%E5%8A%9B%E3%81%AF%20%24(B%2C%20R%2C%20C%2C%20E)%24%E3%80%82%0A%0A%20%20%20%20**TargetEncoder**%20%E3%81%AF%E3%83%A9%E3%83%99%E3%83%AB%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%80%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%81%E3%82%8B%E3%81%AE%E3%81%AF%20train%20%E8%A1%8C%E3%81%AE%E3%83%A9%E3%83%99%E3%83%AB%E3%81%A0%E3%81%91%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20test%20%E8%A1%8C%E3%81%AE%E3%83%A9%E3%83%99%E3%83%AB%E3%81%AF%E3%81%BE%E3%81%95%E3%81%AB%E4%BA%88%E6%B8%AC%E3%81%97%E3%81%9F%E3%81%84%E6%9C%AA%E7%9F%A5%E9%87%8F%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81train%20%E8%A1%8C%E3%81%AE%E3%83%A9%E3%83%99%E3%83%AB%E5%B9%B3%E5%9D%87%E3%81%A7%20%24R%24%20%E8%A1%8C%E3%81%BE%E3%81%A7%E3%83%91%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%97%E3%80%81%0A%20%20%20%20%E3%81%9D%E3%81%AE%E5%BE%8C%20%60Linear(1%2C%20E)%60%20%E3%81%AB%E9%80%9A%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AB%E3%82%88%E3%82%8A%20test%20%E8%A1%8C%E3%81%AB%E3%81%AF%E3%80%8C%E3%81%BE%E3%81%A0%E7%AD%94%E3%81%88%E3%82%92%E8%A6%8B%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%80%8D%E3%81%93%E3%81%A8%E3%82%92%E8%A1%A8%E3%81%99%0A%20%20%20%20%E4%B8%AD%E7%AB%8B%E7%9A%84%E3%81%AA%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%81%8C%E5%85%A5%E3%82%8B%E3%80%82%E5%87%BA%E5%8A%9B%E3%81%AF%20%24(B%2C%20R%2C%201%2C%20E)%24%E3%80%82%0A%0A%20%20%20%20%E6%9C%80%E5%BE%8C%E3%81%AB%E5%88%97%E6%96%B9%E5%90%91%E3%81%A7%E9%80%A3%E7%B5%90%E3%81%97%E3%80%81%E7%89%B9%E5%BE%B4%E5%88%97%EF%BC%8B%E7%9B%AE%E7%9A%84%E5%88%97%E3%81%AE%20%24(B%2C%20R%2C%20C%7B%2B%7D1%2C%20E)%24%20%E3%82%92%E4%BD%9C%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(E_SIZE)%3A%0A%20%20%20%20class%20FeatureEncoder(nn.Module)%3A%0A%20%20%20%20%20%20%20%20def%20__init__(self%2C%20embedding_size%3A%20int)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20super().__init__()%0A%20%20%20%20%20%20%20%20%20%20%20%20self.linear%20%3D%20nn.Linear(1%2C%20embedding_size)%0A%0A%20%20%20%20%20%20%20%20def%20forward(self%2C%20x%3A%20torch.Tensor%2C%20split%3A%20int)%20-%3E%20torch.Tensor%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20x%20%3D%20x.unsqueeze(-1)%0A%20%20%20%20%20%20%20%20%20%20%20%20mean%20%3D%20x%5B%3A%2C%20%3Asplit%5D.mean(dim%3D1%2C%20keepdim%3DTrue)%0A%20%20%20%20%20%20%20%20%20%20%20%20std%20%3D%20x%5B%3A%2C%20%3Asplit%5D.std(dim%3D1%2C%20keepdim%3DTrue)%20%2B%201e-20%0A%20%20%20%20%20%20%20%20%20%20%20%20x%20%3D%20((x%20-%20mean)%20%2F%20std).clip(min%3D-100%2C%20max%3D100)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20self.linear(x)%0A%0A%20%20%20%20class%20TargetEncoder(nn.Module)%3A%0A%20%20%20%20%20%20%20%20def%20__init__(self%2C%20embedding_size%3A%20int)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20super().__init__()%0A%20%20%20%20%20%20%20%20%20%20%20%20self.linear%20%3D%20nn.Linear(1%2C%20embedding_size)%0A%0A%20%20%20%20%20%20%20%20def%20forward(self%2C%20y_train%3A%20torch.Tensor%2C%20num_rows%3A%20int)%20-%3E%20torch.Tensor%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20mean%20%3D%20y_train.mean(dim%3D1%2C%20keepdim%3DTrue)%0A%20%20%20%20%20%20%20%20%20%20%20%20padding%20%3D%20mean.repeat(1%2C%20num_rows%20-%20y_train.shape%5B1%5D%2C%201)%0A%20%20%20%20%20%20%20%20%20%20%20%20y%20%3D%20torch.cat(%5By_train%2C%20padding%5D%2C%20dim%3D1).unsqueeze(-1)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20self.linear(y)%0A%0A%20%20%20%20_fe_probe%20%3D%20FeatureEncoder(E_SIZE)%0A%20%20%20%20print(f%22FeatureEncoder%20%2F%20TargetEncoder%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%20(embedding_size%3D%7BE_SIZE%7D)%22)%0A%20%20%20%20return%20FeatureEncoder%2C%20TargetEncoder%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%20(2)%202%20%E7%A8%AE%E9%A1%9E%E3%81%AE%E6%B3%A8%E6%84%8F%20%E2%80%94%20TabPFN%20%E3%81%AE%E6%A0%B8%E5%BF%83%0A%0A%20%20%20%20Transformer%20%E5%B1%A4%E3%81%AF**2%20%E3%81%A4%E3%81%AE%E6%B3%A8%E6%84%8F**%E3%82%92%E6%8C%81%E3%81%A4%E3%80%82%E3%81%93%E3%82%8C%E3%81%8C%20TabPFN%20%E3%82%92%E9%80%9A%E5%B8%B8%E3%81%AE%E7%B3%BB%E5%88%97%20Transformer%20%E3%81%A8%E5%88%86%E3%81%91%E3%82%8B%E6%9C%AC%E8%B3%AA%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%0A%20%20%20%20**(a)%20%E7%89%B9%E5%BE%B4%E9%96%93%E3%81%AE%E6%B3%A8%E6%84%8F%EF%BC%88attention%20between%20features%EF%BC%89**%EF%BC%9A%24(B%2C%20R%2C%20C%7B%2B%7D1%2C%20E)%24%20%E3%82%92%0A%20%20%20%20%24(B%5Ccdot%20R%2C%20C%7B%2B%7D1%2C%20E)%24%20%E3%81%AB%E5%A4%89%E5%BD%A2%E3%81%97%E3%80%81%E5%88%97%EF%BC%88%E7%89%B9%E5%BE%B4%EF%BC%89%E6%96%B9%E5%90%91%E3%81%A7%E8%87%AA%E5%B7%B1%E6%B3%A8%E6%84%8F%E3%82%92%E5%8F%96%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AB%E3%82%88%E3%82%8A%0A%20%20%20%20%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF**%E5%88%97%E3%81%AE%E4%B8%A6%E3%81%B3%E9%A0%86%E3%81%AB%E4%B8%8D%E5%A4%89%EF%BC%88permutation-equivariant%EF%BC%89**%E3%81%AB%E3%81%AA%E3%82%8A%E3%80%81%E7%89%B9%E5%AE%9A%E3%81%AE%E7%89%B9%E5%BE%B4%E9%A0%86%E5%BA%8F%E3%82%92%E4%BB%AE%E5%AE%9A%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B%E3%80%82%0A%0A%20%20%20%20**(b)%20%E3%83%87%E3%83%BC%E3%82%BF%E7%82%B9%E9%96%93%E3%81%AE%E6%B3%A8%E6%84%8F%EF%BC%88attention%20between%20datapoints%EF%BC%89**%EF%BC%9A%24(B%5Ccdot(C%7B%2B%7D1)%2C%20R%2C%20E)%24%20%E3%81%AB%E8%BB%A2%E7%BD%AE%E3%81%97%E3%80%81%0A%20%20%20%20train%20%E8%A1%8C%E3%81%AF%20train%20%E8%A1%8C%E3%81%A9%E3%81%86%E3%81%97%E3%81%A7%E8%87%AA%E5%B7%B1%E6%B3%A8%E6%84%8F%E3%80%81**test%20%E8%A1%8C%E3%81%AF%20train%20%E8%A1%8C%E3%81%A0%E3%81%91%E3%82%92%20key%2Fvalue%20%E3%81%A8%E3%81%99%E3%82%8B%E4%BA%A4%E5%B7%AE%E6%B3%A8%E6%84%8F**%E3%82%92%E8%A1%8C%E3%81%86%E3%80%82%0A%20%20%20%20%E3%81%93%E3%81%93%E3%81%8C%E3%80%8C%E9%A0%86%E4%BC%9D%E6%92%AD%EF%BC%9D%E5%AD%A6%E7%BF%92%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%80%8D%E3%81%A8%E3%81%AA%E3%82%8B%E4%BB%95%E6%8E%9B%E3%81%91%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82test%20%E8%A1%8C%E3%81%AF%20train%20%E8%A1%8C%EF%BC%88%EF%BC%9D%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%EF%BC%89%E3%82%92%0A%20%20%20%20%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E5%88%9D%E3%82%81%E3%81%A6%E4%BA%88%E6%B8%AC%E3%81%A7%E3%81%8D%E3%80%81%E3%81%97%E3%81%8B%E3%82%82%20train%20%E8%A1%8C%E3%81%AE%E4%B8%A6%E3%81%B3%E9%A0%86%E3%81%AB%E4%B8%8D%E5%A4%89%E3%81%A7%E3%80%81test%20%E8%A1%8C%E3%81%A9%E3%81%86%E3%81%97%E3%81%AF%E4%BA%92%E3%81%84%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%0A%20%20%20%20**test%20%E3%81%AE%E6%83%85%E5%A0%B1%E3%81%8C%E4%BB%96%E3%81%AE%20test%20%E3%81%AB%E6%BC%8F%E3%82%8C%E3%81%AA%E3%81%84**%E3%80%82%0A%0A%20%20%20%20%E3%81%9D%E3%81%AE%E5%BE%8C%E3%81%AB%20MLP%EF%BC%88Linear%E2%86%92GELU%E2%86%92Linear%EF%BC%89%E3%81%A8%E6%AE%8B%E5%B7%AE%E3%83%BBLayerNorm%20%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%80%82%E5%90%84%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%AE%E5%BD%A2%E7%8A%B6%E5%A4%89%E5%8C%96%E3%82%92%0A%20%20%20%20%E8%BF%BD%E3%81%86%E3%81%AE%E3%81%8C%E3%81%93%E3%81%AE%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%81%A7%E6%9C%80%E3%82%82%E9%9B%A3%E3%81%97%E3%81%84%E9%83%A8%E5%88%86%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%AD%E3%81%AE%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A7%E5%BD%A2%E7%8A%B6%E3%82%92%E6%98%8E%E7%A4%BA%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(E_SIZE%2C%20MLP_HIDDEN%2C%20N_HEADS)%3A%0A%20%20%20%20class%20TransformerLayer(nn.Module)%3A%0A%20%20%20%20%20%20%20%20def%20__init__(self%2C%20embedding_size%3A%20int%2C%20nhead%3A%20int%2C%20mlp_hidden%3A%20int)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20super().__init__()%0A%20%20%20%20%20%20%20%20%20%20%20%20self.attn_datapoints%20%3D%20nn.MultiheadAttention(embedding_size%2C%20nhead%2C%20batch_first%3DTrue)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.attn_features%20%3D%20nn.MultiheadAttention(embedding_size%2C%20nhead%2C%20batch_first%3DTrue)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.linear1%20%3D%20nn.Linear(embedding_size%2C%20mlp_hidden)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.linear2%20%3D%20nn.Linear(mlp_hidden%2C%20embedding_size)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.norm1%20%3D%20nn.LayerNorm(embedding_size)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.norm2%20%3D%20nn.LayerNorm(embedding_size)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.norm3%20%3D%20nn.LayerNorm(embedding_size)%0A%0A%20%20%20%20%20%20%20%20def%20forward(self%2C%20src%3A%20torch.Tensor%2C%20split%3A%20int)%20-%3E%20torch.Tensor%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20b%2C%20r%2C%20c%2C%20e%20%3D%20src.shape%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20(a)%20%E7%89%B9%E5%BE%B4%E9%96%93%E3%81%AE%E6%B3%A8%E6%84%8F%3A%20(B%2CR%2CC%2CE)%20-%3E%20(B*R%2C%20C%2C%20E)%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20src.reshape(b%20*%20r%2C%20c%2C%20e)%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20self.attn_features(s%2C%20s%2C%20s)%5B0%5D%20%2B%20s%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20self.norm1(s.reshape(b%2C%20r%2C%20c%2C%20e))%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20(b)%20%E3%83%87%E3%83%BC%E3%82%BF%E7%82%B9%E9%96%93%E3%81%AE%E6%B3%A8%E6%84%8F%3A%20(B%2CR%2CC%2CE)%20-%3E%20(B*C%2C%20R%2C%20E)%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20s.transpose(1%2C%202).reshape(b%20*%20c%2C%20r%2C%20e)%0A%20%20%20%20%20%20%20%20%20%20%20%20left%20%3D%20self.attn_datapoints(s%5B%3A%2C%20%3Asplit%5D%2C%20s%5B%3A%2C%20%3Asplit%5D%2C%20s%5B%3A%2C%20%3Asplit%5D)%5B0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20right%20%3D%20self.attn_datapoints(s%5B%3A%2C%20split%3A%5D%2C%20s%5B%3A%2C%20%3Asplit%5D%2C%20s%5B%3A%2C%20%3Asplit%5D)%5B0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20torch.cat(%5Bleft%2C%20right%5D%2C%20dim%3D1)%20%2B%20s%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20self.norm2(s.reshape(b%2C%20c%2C%20r%2C%20e).transpose(1%2C%202))%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20MLP%0A%20%20%20%20%20%20%20%20%20%20%20%20s%20%3D%20self.linear2(F.gelu(self.linear1(s)))%20%2B%20s%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20self.norm3(s)%0A%0A%20%20%20%20_layer_probe%20%3D%20TransformerLayer(E_SIZE%2C%20N_HEADS%2C%20MLP_HIDDEN)%0A%20%20%20%20print(f%22TransformerLayer%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%20(heads%3D%7BN_HEADS%7D%2C%20mlp_hidden%3D%7BMLP_HIDDEN%7D)%22)%0A%20%20%20%20return%20(TransformerLayer%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%20(3)%20%E3%83%87%E3%82%B3%E3%83%BC%E3%83%80%E3%81%A8%E5%85%A8%E4%BD%93%E3%81%AE%E7%B5%84%E3%81%BF%E7%AB%8B%E3%81%A6%0A%0A%20%20%20%20%E8%A4%87%E6%95%B0%E3%81%AE%20Transformer%20%E5%B1%A4%E3%82%92%E9%80%9A%E3%81%97%E3%81%9F%E3%81%82%E3%81%A8%E3%80%81**%E7%9B%AE%E7%9A%84%E5%88%97%EF%BC%88%E6%9C%80%E5%BE%8C%E3%81%AE%E5%88%97%EF%BC%89%E3%81%AE%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%82%92%20test%20%E8%A1%8C%E3%81%A0%E3%81%91%E5%8F%96%E3%82%8A%E5%87%BA%E3%81%99**%0A%20%20%20%20%24(B%2C%20R_%5Ctext%7Btest%7D%2C%20E)%24%E3%80%82%E3%81%93%E3%82%8C%E3%82%92%20MLP%20%E3%83%87%E3%82%B3%E3%83%BC%E3%83%80%E3%81%AB%E9%80%9A%E3%81%97%E3%80%81%24K%24%20%E3%83%93%E3%83%B3%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%83%AD%E3%82%B8%E3%83%83%E3%83%88%0A%20%20%20%20%24(B%2C%20R_%5Ctext%7Btest%7D%2C%20K)%24%20%E3%82%92%E5%BE%97%E3%82%8B%E3%80%82%E5%AD%A6%E7%BF%92%E6%99%82%E3%81%AF%E3%81%93%E3%81%AE%E3%83%AD%E3%82%B8%E3%83%83%E3%83%88%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%20test%20%E8%A1%8C%E3%81%A0%E3%81%91%E3%81%AE%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC%E3%82%92%E5%8F%96%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20E_SIZE%2C%0A%20%20%20%20FeatureEncoder%2C%0A%20%20%20%20MLP_HIDDEN%2C%0A%20%20%20%20N_BINS%2C%0A%20%20%20%20N_HEADS%2C%0A%20%20%20%20N_LAYERS%2C%0A%20%20%20%20TargetEncoder%2C%0A%20%20%20%20TransformerLayer%2C%0A)%3A%0A%20%20%20%20class%20DecoderHead(nn.Module)%3A%0A%20%20%20%20%20%20%20%20def%20__init__(self%2C%20embedding_size%3A%20int%2C%20mlp_hidden%3A%20int%2C%20num_outputs%3A%20int)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20super().__init__()%0A%20%20%20%20%20%20%20%20%20%20%20%20self.linear1%20%3D%20nn.Linear(embedding_size%2C%20mlp_hidden)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.linear2%20%3D%20nn.Linear(mlp_hidden%2C%20num_outputs)%0A%0A%20%20%20%20%20%20%20%20def%20forward(self%2C%20x%3A%20torch.Tensor)%20-%3E%20torch.Tensor%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20self.linear2(F.gelu(self.linear1(x)))%0A%0A%20%20%20%20class%20TabPFNModel(nn.Module)%3A%0A%20%20%20%20%20%20%20%20def%20__init__(self%2C%20embedding_size%2C%20nhead%2C%20mlp_hidden%2C%20num_layers%2C%20num_outputs)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20super().__init__()%0A%20%20%20%20%20%20%20%20%20%20%20%20self.feature_encoder%20%3D%20FeatureEncoder(embedding_size)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.target_encoder%20%3D%20TargetEncoder(embedding_size)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.blocks%20%3D%20nn.ModuleList(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5BTransformerLayer(embedding_size%2C%20nhead%2C%20mlp_hidden)%20for%20_%20in%20range(num_layers)%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20self.decoder%20%3D%20DecoderHead(embedding_size%2C%20mlp_hidden%2C%20num_outputs)%0A%0A%20%20%20%20%20%20%20%20def%20forward(self%2C%20x%3A%20torch.Tensor%2C%20y_train%3A%20torch.Tensor%2C%20split%3A%20int)%20-%3E%20torch.Tensor%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20y_train.dim()%20%3C%20x.dim()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20y_train%20%3D%20y_train.unsqueeze(-1)%0A%20%20%20%20%20%20%20%20%20%20%20%20x_emb%20%3D%20self.feature_encoder(x%2C%20split)%20%20%20%20%20%20%20%20%20%20%23%20(B%2CR%2CC%2CE)%0A%20%20%20%20%20%20%20%20%20%20%20%20y_emb%20%3D%20self.target_encoder(y_train%2C%20x.shape%5B1%5D)%20%20%23%20(B%2CR%2C1%2CE)%0A%20%20%20%20%20%20%20%20%20%20%20%20src%20%3D%20torch.cat(%5Bx_emb%2C%20y_emb%5D%2C%20dim%3D2)%20%20%20%20%20%20%20%20%20%20%23%20(B%2CR%2CC%2B1%2CE)%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20block%20in%20self.blocks%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20src%20%3D%20block(src%2C%20split)%0A%20%20%20%20%20%20%20%20%20%20%20%20out%20%3D%20src%5B%3A%2C%20split%3A%2C%20-1%2C%20%3A%5D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20test%20%E8%A1%8C%20%C3%97%20%E7%9B%AE%E7%9A%84%E5%88%97%20(B%2CR_test%2CE)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20self.decoder(out)%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20(B%2CR_test%2CK)%0A%0A%20%20%20%20_n_params%20%3D%20sum(%0A%20%20%20%20%20%20%20%20p.numel()%0A%20%20%20%20%20%20%20%20for%20p%20in%20TabPFNModel(E_SIZE%2C%20N_HEADS%2C%20MLP_HIDDEN%2C%20N_LAYERS%2C%20N_BINS).parameters()%0A%20%20%20%20)%0A%20%20%20%20print(f%22TabPFNModel%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%20%2F%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E6%95%B0%20%3D%20%7B_n_params%3A%2C%7D%22)%0A%20%20%20%20return%20(TabPFNModel%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E4%BA%8B%E5%89%8D%E5%88%86%E5%B8%83%20(prior)%20%E3%81%AE%E8%A8%AD%E8%A8%88%E3%81%A8%E7%94%9F%E6%88%90%0A%0A%20%20%20%20%E5%85%AC%E5%BC%8F%20TabPFN%20%E3%82%84%20nanoTabPFN%20%E3%81%AF%E6%95%B0%E5%8D%81%E4%B8%87%E5%80%8B%E3%81%AE%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E4%BA%8B%E5%89%8D%E7%94%9F%E6%88%90%E3%81%97%E3%81%A6%E9%85%8D%E5%B8%83%E3%81%99%E3%82%8B%E3%81%8C%E3%80%81%0A%20%20%20%20%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF**notebook%20%E5%86%85%E3%81%A7%20prior%20%E3%82%92%E3%81%9D%E3%81%AE%E5%A0%B4%E7%94%9F%E6%88%90**%E3%81%97%E3%81%A6%E8%87%AA%E5%B7%B1%E5%AE%8C%E7%B5%90%E3%81%95%E3%81%9B%E3%82%8B%E3%80%82TabPFN%20%E3%81%AE%20prior%20%E3%81%AF%0A%20%20%20%20%E6%A7%8B%E9%80%A0%E7%9A%84%E5%9B%A0%E6%9E%9C%E3%83%A2%E3%83%87%E3%83%AB%EF%BC%8F%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%20MLP%20%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%8F%E3%80%82%E6%9C%AC%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%AF%201%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E4%BD%9C%E3%82%8B%E3%80%82%0A%0A%20%20%20%201.%20%E5%85%A5%E5%8A%9B%20%24x%24%20%E3%82%92%E6%B7%B7%E5%90%88%E5%88%86%E5%B8%83%EF%BC%88%E3%82%AC%E3%82%A6%E3%82%B9%E3%83%BB%E4%B8%80%E6%A7%98%E3%83%BB%E9%9B%A2%E6%95%A3%2F%E9%A0%86%E5%BA%8F%EF%BC%89%E3%81%8B%E3%82%89%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%97%E3%80%81%E4%B8%80%E9%83%A8%E3%81%AE%E5%88%97%E3%81%AF%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84%EF%BC%88feature%20dropout%EF%BC%89%E3%80%82%0A%20%20%20%202.%20%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%81%AA%E9%87%8D%E3%81%BF%E3%81%A8%E6%B4%BB%E6%80%A7%E5%8C%96%EF%BC%88tanh%20%2F%20ReLU%20%2F%20%E6%81%92%E7%AD%89%EF%BC%89%E3%82%92%E6%8C%81%E3%81%A4%E5%B0%8F%E3%81%95%E3%81%AA%20MLP%20%E3%81%AB%20%24x%24%20%E3%82%92%E9%80%9A%E3%81%97%E3%80%81%E9%80%A3%E7%B6%9A%E3%81%AE%E7%9B%AE%E7%9A%84%E5%A4%89%E6%95%B0%E3%82%92%E5%BE%97%E3%82%8B%E3%80%82%0A%20%20%20%203.%20%E8%A6%B3%E6%B8%AC%E3%83%8E%E3%82%A4%E3%82%BA%E3%82%92%E5%8A%A0%E3%81%88%E3%82%8B%E3%80%82%0A%20%20%20%204.%20%E7%9B%AE%E7%9A%84%E5%A4%89%E6%95%B0%E3%82%92%20train%20%E8%A1%8C%E3%81%A7%E6%A8%99%E6%BA%96%E5%8C%96%E3%81%97%E3%80%81**%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%94%E3%81%A8%E3%81%AE%E5%88%86%E4%BD%8D%E7%82%B9%E3%81%A7%20%24K%24%20%E3%83%93%E3%83%B3%E3%81%AB%E9%9B%A2%E6%95%A3%E5%8C%96**%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%204%20%E3%81%8C%E9%87%8D%E8%A6%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E9%80%A3%E7%B6%9A%E5%80%A4%E3%82%92%E5%88%86%E4%BD%8D%E3%83%93%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81**%E5%9B%9E%E5%B8%B0%E5%95%8F%E9%A1%8C%E3%82%92%E7%B4%A0%E7%9B%B4%E3%81%AA%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC**%E3%81%A7%0A%20%20%20%20%E5%AD%A6%E7%BF%92%E3%81%A7%E3%81%8D%E3%80%81%E6%8E%A8%E8%AB%96%E6%99%82%E3%81%AB%E3%81%AF%E3%83%93%E3%83%B3%E4%B8%AD%E5%BF%83%E3%81%AE%E6%9C%9F%E5%BE%85%E5%80%A4%E3%82%92%E5%8F%96%E3%82%8C%E3%81%B0%E5%9B%9E%E5%B8%B0%E5%80%A4%E3%81%B8%E6%88%BB%E3%81%9B%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E6%9C%AC%E5%AE%B6%20TabPFN%20v2%20%E3%81%8C%E6%8E%A1%E7%94%A8%E3%81%99%E3%82%8B%0A%20%20%20%20%E3%80%8C%E3%83%93%E3%83%B3%E4%B8%8A%E3%81%AE%20Riemann%20%E5%88%86%E5%B8%83%E3%80%8D%E3%81%AB%E3%82%88%E3%82%8B%E5%9B%9E%E5%B8%B0%E3%81%A8%E5%90%8C%E3%81%98%E7%99%BA%E6%83%B3%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E7%82%B9%E6%8E%A8%E5%AE%9A%E3%81%A7%E3%81%AA%E3%81%8F**%E4%BA%88%E6%B8%AC%E5%88%86%E5%B8%83**%E3%81%8C%E5%BE%97%E3%82%89%E3%82%8C%E3%82%8B%E5%88%A9%E7%82%B9%E3%81%8C%E3%81%82%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E9%87%8D%E8%A6%81%E3%81%AA%E6%A6%82%E5%BF%B5%E7%9A%84%E6%B3%A8%E6%84%8F%EF%BC%9A**%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%A0%E3%81%91%E3%81%A7%E5%AD%A6%E7%BF%92%E3%81%97%E3%80%81diamonds%20%E3%82%92%E5%AD%A6%E7%BF%92%E6%99%82%E3%81%AB%E3%81%AF%E4%B8%80%E5%BA%A6%E3%82%82%E8%A6%8B%E3%81%AA%E3%81%84**%E3%80%82%0A%20%20%20%20diamonds%20%E3%81%B8%E3%81%AE%E3%80%8Cfit%E3%80%8D%E3%81%AF%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%AB%E3%81%99%E3%81%8E%E3%81%AA%E3%81%84%EF%BC%88in-context%20learning%EF%BC%89%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20def%20_act(z%2C%20kind)%3A%0A%20%20%20%20%20%20%20%20if%20kind%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20torch.tanh(z)%0A%20%20%20%20%20%20%20%20if%20kind%20%3D%3D%201%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20F.relu(z)%0A%20%20%20%20%20%20%20%20return%20z%0A%0A%20%20%20%20def%20sample_prior(batch_size%2C%20rows%2C%20max_features%2C%20num_bins%2C%20split%2C%20device)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%20MLP%20prior%20%E3%81%8B%E3%82%89%20(x%2C%20%E3%83%A9%E3%83%99%E3%83%AB)%20%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%80%82x%3A(B%2CR%2CF)%2C%20labels%3A(B%2CR)%E3%80%82%22%22%22%0A%20%20%20%20%20%20%20%20x%20%3D%20torch.randn(batch_size%2C%20rows%2C%20max_features%2C%20device%3Ddevice)%0A%20%20%20%20%20%20%20%20%23%20%E4%B8%80%E9%83%A8%E3%81%AE%E5%88%97%E3%82%92%E9%A0%86%E5%BA%8F%EF%BC%88%E9%9B%A2%E6%95%A3%EF%BC%89%E7%89%B9%E5%BE%B4%E3%81%AB%E3%81%99%E3%82%8B%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(2)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20col%20%3D%20int(np.random.randint(max_features))%0A%20%20%20%20%20%20%20%20%20%20%20%20levels%20%3D%20int(np.random.randint(2%2C%206))%0A%20%20%20%20%20%20%20%20%20%20%20%20x%5B%3A%2C%20%3A%2C%20col%5D%20%3D%20torch.round(x%5B%3A%2C%20%3A%2C%20col%5D.clip(-2%2C%202)%20*%20levels)%20%2F%20levels%0A%20%20%20%20%20%20%20%20%23%20%E4%B8%80%E6%A7%98%E5%88%86%E5%B8%83%E3%81%AE%E5%88%97%E3%82%82%E6%B7%B7%E3%81%9C%E3%82%8B%0A%20%20%20%20%20%20%20%20u_col%20%3D%20int(np.random.randint(max_features))%0A%20%20%20%20%20%20%20%20x%5B%3A%2C%20%3A%2C%20u_col%5D%20%3D%20torch.rand(batch_size%2C%20rows%2C%20device%3Ddevice)%20*%202%20-%201%0A%20%20%20%20%20%20%20%20%23%20feature%20dropout%3A%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%94%E3%81%A8%E3%81%AB%E4%BD%BF%E3%81%86%E5%88%97%E6%95%B0%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B%0A%20%20%20%20%20%20%20%20n_active%20%3D%20int(np.random.randint(3%2C%20max_features%20%2B%201))%0A%20%20%20%20%20%20%20%20mask%20%3D%20torch.zeros(batch_size%2C%201%2C%20max_features%2C%20device%3Ddevice)%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(batch_size)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20idx%20%3D%20np.random.choice(max_features%2C%20n_active%2C%20replace%3DFalse)%0A%20%20%20%20%20%20%20%20%20%20%20%20mask%5Bi%2C%200%2C%20idx%5D%20%3D%201.0%0A%20%20%20%20%20%20%20%20x_in%20%3D%20x%20*%20mask%0A%20%20%20%20%20%20%20%20%23%20%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%20MLP%20(2%20%E9%9A%A0%E3%82%8C%E5%B1%A4)%0A%20%20%20%20%20%20%20%20hidden%20%3D%20int(np.random.choice(%5B8%2C%2016%2C%2032%5D))%0A%20%20%20%20%20%20%20%20w1%20%3D%20torch.randn(batch_size%2C%20max_features%2C%20hidden%2C%20device%3Ddevice)%20%2F%20np.sqrt(max_features)%0A%20%20%20%20%20%20%20%20b1%20%3D%20torch.randn(batch_size%2C%201%2C%20hidden%2C%20device%3Ddevice)%20*%200.1%0A%20%20%20%20%20%20%20%20z%20%3D%20_act(torch.bmm(x_in%2C%20w1)%20%2B%20b1%2C%20np.random.randint(3))%0A%20%20%20%20%20%20%20%20w2%20%3D%20torch.randn(batch_size%2C%20hidden%2C%20hidden%2C%20device%3Ddevice)%20%2F%20np.sqrt(hidden)%0A%20%20%20%20%20%20%20%20b2%20%3D%20torch.randn(batch_size%2C%201%2C%20hidden%2C%20device%3Ddevice)%20*%200.1%0A%20%20%20%20%20%20%20%20z%20%3D%20_act(torch.bmm(z%2C%20w2)%20%2B%20b2%2C%20np.random.randint(3))%0A%20%20%20%20%20%20%20%20wf%20%3D%20torch.randn(batch_size%2C%20hidden%2C%201%2C%20device%3Ddevice)%20%2F%20np.sqrt(hidden)%0A%20%20%20%20%20%20%20%20y%20%3D%20torch.bmm(z%2C%20wf).squeeze(-1)%0A%20%20%20%20%20%20%20%20%23%20%E8%A6%B3%E6%B8%AC%E3%83%8E%E3%82%A4%E3%82%BA%0A%20%20%20%20%20%20%20%20y%20%3D%20y%20%2B%20torch.randn_like(y)%20*%20(0.02%20%2B%200.1%20*%20float(np.random.rand()))%0A%20%20%20%20%20%20%20%20%23%20train%20%E8%A1%8C%E3%81%A7%E6%A8%99%E6%BA%96%E5%8C%96%0A%20%20%20%20%20%20%20%20m%20%3D%20y%5B%3A%2C%20%3Asplit%5D.mean(dim%3D1%2C%20keepdim%3DTrue)%0A%20%20%20%20%20%20%20%20s%20%3D%20y%5B%3A%2C%20%3Asplit%5D.std(dim%3D1%2C%20keepdim%3DTrue)%20%2B%201e-8%0A%20%20%20%20%20%20%20%20y%20%3D%20(y%20-%20m)%20%2F%20s%0A%20%20%20%20%20%20%20%20%23%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%94%E3%81%A8%E3%81%AE%E5%88%86%E4%BD%8D%E3%83%93%E3%83%B3%E3%81%AB%E9%9B%A2%E6%95%A3%E5%8C%96%0A%20%20%20%20%20%20%20%20qs%20%3D%20torch.linspace(0%2C%201%2C%20num_bins%20%2B%201%2C%20device%3Ddevice)%5B1%3A-1%5D%0A%20%20%20%20%20%20%20%20edges%20%3D%20torch.quantile(y%5B%3A%2C%20%3Asplit%5D%2C%20qs%2C%20dim%3D1).transpose(0%2C%201)%0A%20%20%20%20%20%20%20%20labels%20%3D%20torch.zeros_like(y%2C%20dtype%3Dtorch.long)%0A%20%20%20%20%20%20%20%20for%20k%20in%20range(num_bins%20-%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20labels%20%2B%3D%20(y%20%3E%20edges%5B%3A%2C%20k%3Ak%20%2B%201%5D).long()%0A%20%20%20%20%20%20%20%20return%20x%2C%20labels%0A%0A%20%20%20%20print(%22sample_prior%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%22)%0A%20%20%20%20return%20(sample_prior%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20prior%20%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E4%BE%8B%0A%0A%20%20%20%20%E7%94%9F%E6%88%90%E3%81%97%E3%81%9F%201%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E6%95%A3%E5%B8%83%E5%9B%B3%E3%82%92%E7%A4%BA%E3%81%99%E3%80%82%E8%89%B2%E3%81%AF%20%24K%3D10%24%20%E3%83%93%E3%83%B3%E3%81%AE%E3%83%A9%E3%83%99%E3%83%AB%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%20MLP%20%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E7%89%B9%E5%BE%B4%E3%81%A8%EF%BC%88%E9%9B%A2%E6%95%A3%E5%8C%96%E3%81%97%E3%81%9F%EF%BC%89%E7%9B%AE%E7%9A%84%E5%A4%89%E6%95%B0%E3%81%AE%E9%96%93%E3%81%AB%E9%9D%9E%E7%B7%9A%E5%BD%A2%E3%81%AA%E9%96%A2%E4%BF%82%E3%81%8C%E7%8F%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(MAXF%2C%20N_BINS%2C%20ROWS%2C%20SPLIT_DEMO%2C%20device%2C%20sample_prior)%3A%0A%20%20%20%20torch.manual_seed(1)%0A%20%20%20%20np.random.seed(1)%0A%20%20%20%20_x%2C%20_labels%20%3D%20sample_prior(1%2C%20ROWS%2C%20MAXF%2C%20N_BINS%2C%20SPLIT_DEMO%2C%20device)%0A%20%20%20%20_xn%20%3D%20_x%5B0%5D.cpu().numpy()%0A%20%20%20%20_ln%20%3D%20_labels%5B0%5D.cpu().numpy()%0A%20%20%20%20_fig%2C%20_axes%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(9%2C%203.4))%0A%20%20%20%20_sc0%20%3D%20_axes%5B0%5D.scatter(_xn%5B%3A%2C%200%5D%2C%20_xn%5B%3A%2C%201%5D%2C%20c%3D_ln%2C%20cmap%3D%22viridis%22%2C%20s%3D12)%0A%20%20%20%20_axes%5B0%5D.set(xlabel%3D%22feature%200%22%2C%20ylabel%3D%22feature%201%22%2C%20title%3D%22prior%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%20(%E8%89%B2%3D%E3%83%93%E3%83%B3)%22)%0A%20%20%20%20_axes%5B1%5D.hist(_ln%2C%20bins%3Dnp.arange(N_BINS%20%2B%201)%20-%200.5%2C%20color%3D%22%234C72B0%22)%0A%20%20%20%20_axes%5B1%5D.set(xlabel%3D%22bin%20label%22%2C%20ylabel%3D%22count%22%2C%20title%3D%22%E3%83%93%E3%83%B3%E3%81%AF%E3%81%BB%E3%81%BC%E5%9D%87%E7%AD%89%20(%E5%88%86%E4%BD%8D%E9%9B%A2%E6%95%A3%E5%8C%96)%22)%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%83%AB%E3%83%BC%E3%83%97%0A%0A%20%20%20%20%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%AF%20AdamW%EF%BC%88%60OneCycleLR%60%20%E3%81%AB%E3%82%88%E3%82%8B%20warmup%20%E4%BB%98%E3%81%8D%E3%80%81%60max_lr%3D1.5e-3%60%E3%80%81%60pct_start%3D0.2%60%EF%BC%89%E3%80%81%0A%20%20%20%20%E5%8B%BE%E9%85%8D%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%201.0%E3%80%81test%20%E8%A1%8C%E3%81%A0%E3%81%91%E3%81%AE%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC%E3%80%82%0A%20%20%20%20nanoTabPFN%20%E3%81%AF%20%60schedulefree.AdamWScheduleFree%60%20%E3%82%92%E4%BD%BF%E3%81%86%E3%81%8C%E3%80%81%E6%9C%AC%E7%92%B0%E5%A2%83%E3%81%AB%E3%81%9D%E3%81%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AF%E7%84%A1%E3%81%84%E3%81%9F%E3%82%81%0A%20%20%20%20**%60torch.optim.AdamW%60%20%2B%20cosine%20%E7%B3%BB%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%E3%81%A7%E4%BB%A3%E6%9B%BF**%E3%81%97%E3%81%9F%E3%80%82%E5%AD%A6%E7%BF%92%E7%8E%87%E3%82%92%E4%B8%8B%E3%81%92%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%AF%E3%80%81%0A%20%20%20%20%E9%AB%98%E3%81%84%E5%AD%A6%E7%BF%92%E7%8E%87%E3%81%A0%E3%81%A8%E5%87%BA%E5%8A%9B%E3%81%8C%E4%B8%80%E6%A7%98%E5%88%86%E5%B8%83%E3%81%B8%E5%B4%A9%E5%A3%8A%E3%81%97%E6%90%8D%E5%A4%B1%E3%81%8C%20%24%5Clog%20K%24%20%E3%81%8B%E3%82%89%E4%B8%8B%E3%81%8C%E3%82%89%E3%81%AA%E3%81%84%E4%B8%8D%E5%AE%89%E5%AE%9A%E6%80%A7%E3%81%8C%E8%A6%B3%E6%B8%AC%E3%81%95%E3%82%8C%E3%81%9F%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E8%A8%88%E7%AE%97%E4%BA%88%E7%AE%97%E3%81%AE%E3%81%9F%E3%82%81%E3%80%81%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E5%B0%8F%E3%81%95%E3%81%8F%E5%AD%A6%E7%BF%92%E3%82%82%E7%9F%AD%E3%81%8F%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%EF%BC%88%E3%81%93%E3%81%AE%20notebook%20%E5%85%A8%E4%BD%93%E3%81%8C%E6%95%B0%E5%88%86%E3%81%A7%E5%AE%8C%E4%BA%86%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E8%AA%BF%E6%95%B4%EF%BC%89%E3%80%82%0A%20%20%20%20%E5%AE%9F%E6%B8%AC%E3%81%AE%E5%A3%81%E6%99%82%E8%A8%88%E6%99%82%E9%96%93%E3%81%AF%E4%B8%8B%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%A7%E5%A0%B1%E5%91%8A%E3%81%99%E3%82%8B%E3%80%82%E3%83%90%E3%83%83%E3%83%81%E3%81%94%E3%81%A8%E3%81%AB%20prior%20%E3%82%92%E6%96%B0%E8%A6%8F%E7%94%9F%E6%88%90%E3%81%97%E3%80%81%E5%88%86%E5%89%B2%E4%BD%8D%E7%BD%AE%E3%82%82%E6%AF%8E%E5%9B%9E%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%97%E7%9B%B4%E3%81%99%E3%81%AE%E3%81%A7%E3%80%81%0A%20%20%20%20%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E5%90%8C%E3%81%98%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E4%BA%8C%E5%BA%A6%E8%A6%8B%E3%81%AA%E3%81%84%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20E_SIZE%2C%0A%20%20%20%20MAXF%2C%0A%20%20%20%20MLP_HIDDEN%2C%0A%20%20%20%20N_BINS%2C%0A%20%20%20%20N_HEADS%2C%0A%20%20%20%20N_LAYERS%2C%0A%20%20%20%20ROWS%2C%0A%20%20%20%20SPLIT_MAX%2C%0A%20%20%20%20SPLIT_MIN%2C%0A%20%20%20%20TabPFNModel%2C%0A%20%20%20%20device%2C%0A%20%20%20%20sample_prior%2C%0A%20%20%20%20seed%2C%0A)%3A%0A%20%20%20%20torch.manual_seed(seed)%0A%20%20%20%20np.random.seed(seed)%0A%20%20%20%20if%20device.type%20%3D%3D%20%22cuda%22%3A%0A%20%20%20%20%20%20%20%20torch.cuda.manual_seed_all(seed)%0A%0A%20%20%20%20tabpfn%20%3D%20TabPFNModel(E_SIZE%2C%20N_HEADS%2C%20MLP_HIDDEN%2C%20N_LAYERS%2C%20N_BINS).to(device)%0A%20%20%20%20_n_steps%20%3D%202000%0A%20%20%20%20_batch%20%3D%2032%0A%20%20%20%20_lr%20%3D%201.5e-3%0A%20%20%20%20_optimizer%20%3D%20torch.optim.AdamW(tabpfn.parameters()%2C%20lr%3D_lr%2C%20weight_decay%3D0.0)%0A%20%20%20%20_scheduler%20%3D%20torch.optim.lr_scheduler.OneCycleLR(%0A%20%20%20%20%20%20%20%20_optimizer%2C%20max_lr%3D_lr%2C%20total_steps%3D_n_steps%2C%20pct_start%3D0.2%0A%20%20%20%20)%0A%20%20%20%20_criterion%20%3D%20nn.CrossEntropyLoss()%0A%0A%20%20%20%20tabpfn.train()%0A%20%20%20%20loss_history%20%3D%20%5B%5D%0A%20%20%20%20_t0%20%3D%20time.perf_counter()%0A%20%20%20%20for%20_step%20in%20range(_n_steps)%3A%0A%20%20%20%20%20%20%20%20_split%20%3D%20int(np.random.randint(SPLIT_MIN%2C%20SPLIT_MAX%20%2B%201))%0A%20%20%20%20%20%20%20%20_x%2C%20_labels%20%3D%20sample_prior(_batch%2C%20ROWS%2C%20MAXF%2C%20N_BINS%2C%20_split%2C%20device)%0A%20%20%20%20%20%20%20%20_out%20%3D%20tabpfn(_x%2C%20_labels%5B%3A%2C%20%3A_split%5D.float()%2C%20_split)%0A%20%20%20%20%20%20%20%20_loss%20%3D%20_criterion(_out.reshape(-1%2C%20N_BINS)%2C%20_labels%5B%3A%2C%20_split%3A%5D.reshape(-1))%0A%20%20%20%20%20%20%20%20_optimizer.zero_grad()%0A%20%20%20%20%20%20%20%20_loss.backward()%0A%20%20%20%20%20%20%20%20torch.nn.utils.clip_grad_norm_(tabpfn.parameters()%2C%201.0)%0A%20%20%20%20%20%20%20%20_optimizer.step()%0A%20%20%20%20%20%20%20%20_scheduler.step()%0A%20%20%20%20%20%20%20%20loss_history.append(float(_loss.item()))%0A%20%20%20%20train_seconds%20%3D%20time.perf_counter()%20-%20_t0%0A%20%20%20%20tabpfn.eval()%0A%20%20%20%20print(%0A%20%20%20%20%20%20%20%20f%22%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%20%E5%AE%8C%E4%BA%86%3A%20steps%3D%7B_n_steps%7D%2C%20batch%3D%7B_batch%7D%2C%20lr%3D%7B_lr%7D%2C%20%22%0A%20%20%20%20%20%20%20%20f%22time%3D%7Btrain_seconds%3A.1f%7Ds%2C%20final_loss(%E5%B9%B3%E5%9D%87%E7%9B%B4%E8%BF%9150)%3D%7Bnp.mean(loss_history%5B-50%3A%5D)%3A.4f%7D%22%0A%20%20%20%20)%0A%20%20%20%20return%20loss_history%2C%20tabpfn%2C%20train_seconds%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E5%AD%A6%E7%BF%92%E6%9B%B2%E7%B7%9A%0A%0A%20%20%20%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%94%E3%81%A8%E3%81%AB%E9%9B%A3%E6%98%93%E5%BA%A6%E3%81%8C%E7%95%B0%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E6%90%8D%E5%A4%B1%E3%81%AF%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E9%96%93%E3%81%A7%E6%8F%BA%E3%82%8C%E3%82%8B%E3%81%8C%E3%80%81%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%81%AF%E7%9D%80%E5%AE%9F%E3%81%AB%E4%B8%8B%E3%81%8C%E3%82%8B%E3%80%82%0A%20%20%20%20%E5%88%9D%E6%9C%9F%E5%80%A4%E3%81%AE%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AD%E3%83%94%E3%83%BC%E3%81%AF%20%24%5Clog%20K%20%3D%20%5Clog%2016%20%5Capprox%202.77%24%EF%BC%88%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E6%8E%A8%E6%B8%AC%EF%BC%89%E3%81%AB%E8%BF%91%E3%81%84%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(N_BINS%2C%20loss_history)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(7%2C%203.6))%0A%20%20%20%20_ax.plot(loss_history%2C%20color%3D%22%23BBBBBB%22%2C%20lw%3D0.6%2C%20label%3D%22step%20loss%22)%0A%20%20%20%20_w%20%3D%2025%0A%20%20%20%20_ma%20%3D%20np.convolve(loss_history%2C%20np.ones(_w)%20%2F%20_w%2C%20mode%3D%22valid%22)%0A%20%20%20%20_ax.plot(np.arange(_w%20-%201%2C%20len(loss_history))%2C%20_ma%2C%20color%3D%22%23C44E52%22%2C%20lw%3D2%2C%20label%3D%22%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87(25)%22)%0A%20%20%20%20_ax.axhline(np.log(N_BINS)%2C%20color%3D%22k%22%2C%20ls%3D%22--%22%2C%20lw%3D1%2C%20label%3D%22%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E6%8E%A8%E6%B8%AC%20log%20K%22)%0A%20%20%20%20_ax.set(xlabel%3D%22step%22%2C%20ylabel%3D%22cross%20entropy%22%2C%20title%3D%22%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%AE%E6%90%8D%E5%A4%B1%E6%9B%B2%E7%B7%9A%22)%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E5%81%A5%E5%85%A8%E6%80%A7%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%0A%0A%20%20%20%20diamonds%20%E3%81%AB%E9%80%B2%E3%82%80%E5%89%8D%E3%81%AB%E3%80%81%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8C**%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA**%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%82%92%E5%AD%A6%E3%82%93%E3%81%A0%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%80%82%E5%AD%A6%E7%BF%92%E6%99%82%E3%81%AB%E4%B8%80%E5%BA%A6%E3%82%82%E8%A6%8B%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%0A%20%20%20%20%E6%96%B0%E8%A6%8F%E3%81%AE%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%A8%E3%80%81scikit-learn%20%E3%81%AE%20toy%20%E3%83%87%E3%83%BC%E3%82%BF%EF%BC%88make_regression%EF%BC%89%E3%82%92%E5%88%86%E4%BD%8D%E3%83%93%E3%83%B3%E3%81%AB%E9%9B%A2%E6%95%A3%E5%8C%96%E3%81%97%E3%81%A6%0A%20%20%20%20%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%A0%E3%81%91%E3%81%A7%E4%BA%88%E6%B8%AC%E3%81%97%E3%80%81%E3%83%93%E3%83%B3%E6%AD%A3%E8%A7%A3%E7%8E%87%E3%81%8C%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%EF%BC%88%241%2FK%24%EF%BC%89%E3%82%92%E6%98%8E%E7%A2%BA%E3%81%AB%E4%B8%8A%E5%9B%9E%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E8%A6%8B%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(MAXF%2C%20N_BINS%2C%20ROWS%2C%20SPLIT_DEMO%2C%20device%2C%20sample_prior%2C%20tabpfn)%3A%0A%20%20%20%20torch.manual_seed(123)%0A%20%20%20%20np.random.seed(123)%0A%20%20%20%20_accs%20%3D%20%5B%5D%0A%20%20%20%20with%20torch.no_grad()%3A%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(20)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_x%2C%20_labels%20%3D%20sample_prior(8%2C%20ROWS%2C%20MAXF%2C%20N_BINS%2C%20SPLIT_DEMO%2C%20device)%0A%20%20%20%20%20%20%20%20%20%20%20%20_pred%20%3D%20tabpfn(_x%2C%20_labels%5B%3A%2C%20%3ASPLIT_DEMO%5D.float()%2C%20SPLIT_DEMO).argmax(-1)%0A%20%20%20%20%20%20%20%20%20%20%20%20_accs.append((_pred%20%3D%3D%20_labels%5B%3A%2C%20SPLIT_DEMO%3A%5D).float().mean().item())%0A%20%20%20%20synthetic_bin_acc%20%3D%20float(np.mean(_accs))%0A%20%20%20%20print(f%22%E6%96%B0%E8%A6%8F%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%B9%B3%E5%9D%87%E3%83%93%E3%83%B3%E6%AD%A3%E8%A7%A3%E7%8E%87%20%3D%20%7Bsynthetic_bin_acc%3A.3f%7D%20(%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%3D%7B1%2FN_BINS%3A.3f%7D)%22)%0A%20%20%20%20return%20(synthetic_bin_acc%2C)%0A%0A%0A%40app.cell%0Adef%20_(N_BINS%2C%20device%2C%20tabpfn)%3A%0A%20%20%20%20from%20sklearn.datasets%20import%20make_regression%0A%0A%20%20%20%20_Xr%2C%20_yr%20%3D%20make_regression(n_samples%3D240%2C%20n_features%3D6%2C%20noise%3D8.0%2C%20random_state%3D7)%0A%20%20%20%20_split%20%3D%20140%0A%20%20%20%20_z%20%3D%20(_yr%20-%20_yr%5B%3A_split%5D.mean())%20%2F%20(_yr%5B%3A_split%5D.std()%20%2B%201e-8)%0A%20%20%20%20_edges%20%3D%20np.quantile(_z%5B%3A_split%5D%2C%20np.linspace(0%2C%201%2C%20N_BINS%20%2B%201)%5B1%3A-1%5D)%0A%20%20%20%20_labels%20%3D%20np.digitize(_z%2C%20_edges)%0A%20%20%20%20with%20torch.no_grad()%3A%0A%20%20%20%20%20%20%20%20_xt%20%3D%20torch.from_numpy(_Xr).float().unsqueeze(0).to(device)%0A%20%20%20%20%20%20%20%20_yt%20%3D%20torch.from_numpy(_labels%5B%3A_split%5D).float().unsqueeze(0).to(device)%0A%20%20%20%20%20%20%20%20_pred%20%3D%20tabpfn(_xt%2C%20_yt%2C%20_split).squeeze(0).argmax(-1).cpu().numpy()%0A%20%20%20%20toy_bin_acc%20%3D%20float((_pred%20%3D%3D%20_labels%5B_split%3A%5D).mean())%0A%20%20%20%20print(f%22sklearn%20make_regression%20%E3%81%AE%E3%83%93%E3%83%B3%E6%AD%A3%E8%A7%A3%E7%8E%87%20%3D%20%7Btoy_bin_acc%3A.3f%7D%20(%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%3D%7B1%2FN_BINS%3A.3f%7D)%22)%0A%20%20%20%20return%20(toy_bin_acc%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20diamonds%20%E3%81%B8%E3%81%AE%20in-context%20%E9%81%A9%E7%94%A8%0A%0A%20%20%20%20seaborn%20%E3%81%AE%20diamonds%EF%BC%8853%2C940%20%E8%A1%8C%EF%BC%89%E3%82%92%E4%BD%BF%E3%81%86%E3%80%82%E9%A0%86%E5%BA%8F%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%EF%BC%88cut%20%2F%20color%20%2F%20clarity%EF%BC%89%E3%81%AF%E5%93%81%E8%B3%AA%E9%A0%86%E3%81%AB%E6%95%B4%E6%95%B0%E3%82%B3%E3%83%BC%E3%83%89%E5%8C%96%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%E4%BD%BF%E3%81%86%E7%89%B9%E5%BE%B4%E3%81%AF%209%20%E5%80%8B%EF%BC%9A%60carat%2C%20cut_code%2C%20color_code%2C%20clarity_code%2C%20depth%2C%20table%2C%20x%2C%20y%2C%20z%60%E3%80%81%E7%9B%AE%E7%9A%84%E5%A4%89%E6%95%B0%E3%81%AF%20%60price%60%E3%80%82%0A%0A%20%20%20%20TabPFN%20%E3%81%AB%E3%81%AF%E7%8F%BE%E5%AE%9F%E7%9A%84%E3%81%AA%E5%88%B6%E7%B4%84%E3%81%8C%E3%81%82%E3%82%8B%E3%80%82%0A%0A%20%20%20%201.%20**%E6%96%87%E8%84%88%E9%95%B7**%EF%BC%9A%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E6%95%B0%E7%99%BE%E8%A1%8C%E3%81%AE%20train%20%E3%81%A7%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81context%20%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E3%81%88%E3%82%8B%E8%A1%8C%E6%95%B0%E3%81%AB%E4%B8%8A%E9%99%90%E3%81%8C%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%20%20%20%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%20context%20%E3%82%92%E6%9C%80%E5%A4%A7%201024%20%E8%A1%8C%E3%80%81test%20%E3%82%92%201500%20%E8%A1%8C%E3%81%AB%E7%B5%9E%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%20GBDT%20%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E6%9C%AC%E8%B3%AA%E7%9A%84%E3%81%AA%E5%BC%B1%E7%82%B9%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%0A%20%20%20%20%20%20%20%E5%BE%8C%E3%81%A7%20context%20%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%A8%E7%B2%BE%E5%BA%A6%E3%81%8C%E3%81%A9%E3%81%86%E5%A4%89%E3%82%8F%E3%82%8B%E3%81%8B%E3%82%92%E5%AE%9F%E6%B8%AC%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%202.%20**%E7%89%B9%E5%BE%B4%E6%95%B0**%EF%BC%9Aprior%20%E3%81%8C%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%E6%9C%80%E5%A4%A7%E7%89%B9%E5%BE%B4%E6%95%B0%EF%BC%88%E6%9C%AC%E5%AE%9F%E8%A3%85%E3%81%AF%2010%EF%BC%89%E3%81%A7%E4%B8%8A%E9%99%90%E3%81%8C%E6%B1%BA%E3%81%BE%E3%82%8B%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%209%20%E7%89%B9%E5%BE%B4%E3%82%92%E4%BD%BF%E3%81%86%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20_diamonds%20%3D%20sns.load_dataset(%22diamonds%22).copy()%0A%20%20%20%20_cut_map%20%3D%20%7B%22Fair%22%3A%200%2C%20%22Good%22%3A%201%2C%20%22Very%20Good%22%3A%202%2C%20%22Premium%22%3A%203%2C%20%22Ideal%22%3A%204%7D%0A%20%20%20%20_color_map%20%3D%20%7B%22J%22%3A%200%2C%20%22I%22%3A%201%2C%20%22H%22%3A%202%2C%20%22G%22%3A%203%2C%20%22F%22%3A%204%2C%20%22E%22%3A%205%2C%20%22D%22%3A%206%7D%0A%20%20%20%20_clarity_map%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22I1%22%3A%200%2C%20%22SI2%22%3A%201%2C%20%22SI1%22%3A%202%2C%20%22VS2%22%3A%203%2C%20%22VS1%22%3A%204%2C%20%22VVS2%22%3A%205%2C%20%22VVS1%22%3A%206%2C%20%22IF%22%3A%207%2C%0A%20%20%20%20%7D%0A%20%20%20%20_diamonds%5B%22cut_code%22%5D%20%3D%20_diamonds%5B%22cut%22%5D.astype(str).map(_cut_map)%0A%20%20%20%20_diamonds%5B%22color_code%22%5D%20%3D%20_diamonds%5B%22color%22%5D.astype(str).map(_color_map)%0A%20%20%20%20_diamonds%5B%22clarity_code%22%5D%20%3D%20_diamonds%5B%22clarity%22%5D.astype(str).map(_clarity_map)%0A%20%20%20%20feature_cols%20%3D%20%5B%0A%20%20%20%20%20%20%20%20%22carat%22%2C%20%22cut_code%22%2C%20%22color_code%22%2C%20%22clarity_code%22%2C%0A%20%20%20%20%20%20%20%20%22depth%22%2C%20%22table%22%2C%20%22x%22%2C%20%22y%22%2C%20%22z%22%2C%0A%20%20%20%20%5D%0A%20%20%20%20X_all%20%3D%20_diamonds%5Bfeature_cols%5D.to_numpy(dtype%3Dnp.float32)%0A%20%20%20%20y_all%20%3D%20_diamonds%5B%22price%22%5D.to_numpy(dtype%3Dnp.float32)%0A%20%20%20%20diamonds_head%20%3D%20_diamonds%5B%5B%22carat%22%2C%20%22cut%22%2C%20%22color%22%2C%20%22clarity%22%2C%20%22price%22%5D%20%2B%20%5B%22cut_code%22%5D%5D.head()%0A%20%20%20%20print(f%22diamonds%3A%20X_all%3D%7BX_all.shape%7D%2C%20price%20range%3D%5B%7By_all.min()%3A.0f%7D%2C%20%7By_all.max()%3A.0f%7D%5D%22)%0A%20%20%20%20diamonds_head%0A%20%20%20%20return%20X_all%2C%20y_all%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E4%BA%88%E6%B8%AC%E3%81%AE%E5%AE%9F%E8%A3%85%20%E2%80%94%20%E3%83%93%E3%83%B3%E3%81%AE%E6%9C%9F%E5%BE%85%E5%80%A4%E3%81%A7%E5%9B%9E%E5%B8%B0%E5%80%A4%E3%81%AB%E6%88%BB%E3%81%99%0A%0A%20%20%20%20context%EF%BC%88train%EF%BC%89%E3%81%AE%20price%20%E3%82%92%E6%A8%99%E6%BA%96%E5%8C%96%E3%81%97%E3%80%81%E3%81%9D%E3%81%AE%E5%88%86%E4%BD%8D%E7%82%B9%E3%81%A7%20%24K%24%20%E3%83%93%E3%83%B3%E3%81%AE%E7%AB%AF%E7%82%B9%E3%82%92%E4%BD%9C%E3%82%8B%E3%80%82%E5%90%84%20context%20%E8%A1%8C%E3%81%AB%E3%83%93%E3%83%B3%E7%95%AA%E5%8F%B7%E3%82%92%0A%20%20%20%20%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%81%A6%20%60y_train%60%20%E3%81%A8%E3%81%97%E3%80%81%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%A7%20test%20%E8%A1%8C%E3%81%AE%E3%83%93%E3%83%B3%E7%A2%BA%E7%8E%87%E3%82%92%E5%BE%97%E3%82%8B%E3%80%82%E5%9B%9E%E5%B8%B0%E5%80%A4%E3%81%AF%E6%AC%A1%E5%BC%8F%E3%81%A7%E6%88%BB%E3%81%99%E3%80%82%0A%20%20%20%20%E6%A8%99%E6%BA%96%E5%8C%96%E7%A9%BA%E9%96%93%E3%81%A7%E3%81%AE%E3%83%93%E3%83%B3%E4%B8%AD%E5%BF%83%20%24c_k%24%EF%BC%88%E3%81%9D%E3%81%AE%E3%83%93%E3%83%B3%E3%81%AB%E5%85%A5%E3%82%8B%20context%20%E3%81%AE%E5%B9%B3%E5%9D%87%20%24z%24%EF%BC%89%E3%82%92%E4%BD%BF%E3%81%84%E3%80%81%0A%0A%20%20%20%20%24%24%0A%20%20%20%20%5Chat%7Bz%7D%20%3D%20%5Csum_%7Bk%3D1%7D%5E%7BK%7D%20p_k%5C%2C%20c_k%2C%20%5Cqquad%20%5Chat%7B%5Ctext%7Bprice%7D%7D%20%3D%20%5Cmu_%5Ctext%7Btrain%7D%20%2B%20%5Csigma_%5Ctext%7Btrain%7D%5C%2C%5Chat%7Bz%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20%E3%81%A8%E3%81%99%E3%82%8B%E3%80%82%24p_k%24%20%E3%81%8C%E4%BA%88%E6%B8%AC%E5%88%86%E5%B8%83%E3%81%9D%E3%81%AE%E3%82%82%E3%81%AE%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E7%82%B9%E6%8E%A8%E5%AE%9A%E3%81%AB%E5%8A%A0%E3%81%88%E3%81%A6**%E4%B8%8D%E7%A2%BA%E5%AE%9F%E6%80%A7**%E3%82%82%E5%BE%97%E3%82%89%E3%82%8C%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(device)%3A%0A%20%20%20%20def%20tabpfn_predict(model%2C%20x_ctx%2C%20price_ctx%2C%20x_test%2C%20num_bins)%3A%0A%20%20%20%20%20%20%20%20mu%20%3D%20float(price_ctx.mean())%0A%20%20%20%20%20%20%20%20sd%20%3D%20float(price_ctx.std())%20%2B%201e-8%0A%20%20%20%20%20%20%20%20z%20%3D%20(price_ctx%20-%20mu)%20%2F%20sd%0A%20%20%20%20%20%20%20%20edges%20%3D%20np.quantile(z%2C%20np.linspace(0%2C%201%2C%20num_bins%20%2B%201)%5B1%3A-1%5D)%0A%20%20%20%20%20%20%20%20ctx_labels%20%3D%20np.digitize(z%2C%20edges)%0A%20%20%20%20%20%20%20%20centers%20%3D%20np.array(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20z%5Bctx_labels%20%3D%3D%20k%5D.mean()%20if%20np.any(ctx_labels%20%3D%3D%20k)%20else%20edges%5Bmin(k%2C%20len(edges)%20-%201)%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20k%20in%20range(num_bins)%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20x_full%20%3D%20np.concatenate(%5Bx_ctx%2C%20x_test%5D%2C%20axis%3D0)%0A%20%20%20%20%20%20%20%20n_ctx%20%3D%20len(x_ctx)%0A%20%20%20%20%20%20%20%20with%20torch.no_grad()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20xt%20%3D%20torch.from_numpy(x_full).float().unsqueeze(0).to(device)%0A%20%20%20%20%20%20%20%20%20%20%20%20yt%20%3D%20torch.from_numpy(ctx_labels).float().unsqueeze(0).to(device)%0A%20%20%20%20%20%20%20%20%20%20%20%20logits%20%3D%20model(xt%2C%20yt%2C%20n_ctx).squeeze(0)%0A%20%20%20%20%20%20%20%20%20%20%20%20prob%20%3D%20torch.softmax(logits%2C%20dim%3D-1).cpu().numpy()%0A%20%20%20%20%20%20%20%20z_pred%20%3D%20prob%20%40%20centers%0A%20%20%20%20%20%20%20%20price_pred%20%3D%20mu%20%2B%20sd%20*%20z_pred%0A%20%20%20%20%20%20%20%20return%20price_pred%2C%20prob%2C%20centers%2C%20mu%2C%20sd%0A%0A%20%20%20%20print(%22tabpfn_predict%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%22)%0A%20%20%20%20return%20(tabpfn_predict%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E5%89%B2%0A%0A%20%20%20%20test%20%E3%82%92%202000%20%E8%A1%8C%E5%9B%BA%E5%AE%9A%E3%81%A7%E5%88%87%E3%82%8A%E5%87%BA%E3%81%97%E3%80%81%E6%AE%8B%E3%82%8A%E3%82%92%20context%20%E3%81%AE%E6%8A%BD%E5%87%BA%E5%85%83%E3%83%97%E3%83%BC%E3%83%AB%EF%BC%88train%20pool%EF%BC%89%E3%81%A8%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%E4%B8%BB%E6%AF%94%E8%BC%83%E3%81%A7%E3%81%AF%20context%20%E3%82%92%201024%20%E8%A1%8C%E3%81%AB%E7%B5%9E%E3%82%8B%E3%80%82TabPFN%20%E3%81%AE%E3%80%8Cfit%E3%80%8D%E3%81%AF%E8%A1%8C%E3%82%92%E6%B8%A1%E3%81%99%E3%81%A0%E3%81%91%E3%81%AA%E3%81%AE%E3%81%A7%E5%AD%A6%E7%BF%92%E3%82%B3%E3%82%B9%E3%83%88%E3%81%AF%E3%81%BB%E3%81%BC%200%20%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_all%2C%20y_all)%3A%0A%20%20%20%20from%20sklearn.model_selection%20import%20train_test_split%0A%0A%20%20%20%20X_pool%2C%20X_test%2C%20y_pool%2C%20y_test%20%3D%20train_test_split(%0A%20%20%20%20%20%20%20%20X_all%2C%20y_all%2C%20test_size%3D2000%2C%20random_state%3D42%0A%20%20%20%20)%0A%20%20%20%20_rng%20%3D%20np.random.default_rng(0)%0A%20%20%20%20_idx%20%3D%20_rng.choice(len(X_pool)%2C%201024%2C%20replace%3DFalse)%0A%20%20%20%20X_ctx%20%3D%20X_pool%5B_idx%5D%0A%20%20%20%20y_ctx%20%3D%20y_pool%5B_idx%5D%0A%20%20%20%20X_test_eval%20%3D%20X_test%5B%3A1500%5D%0A%20%20%20%20y_test_eval%20%3D%20y_test%5B%3A1500%5D%0A%20%20%20%20print(%0A%20%20%20%20%20%20%20%20f%22pool%3D%7BX_pool.shape%5B0%5D%7D%2C%20context%3D%7BX_ctx.shape%5B0%5D%7D%2C%20%22%0A%20%20%20%20%20%20%20%20f%22test(%E8%A9%95%E4%BE%A1)%3D%7BX_test_eval.shape%5B0%5D%7D%22%0A%20%20%20%20)%0A%20%20%20%20return%20X_ctx%2C%20X_pool%2C%20X_test_eval%2C%20y_ctx%2C%20y_pool%2C%20y_test_eval%0A%0A%0A%40app.cell%0Adef%20_(N_BINS%2C%20X_ctx%2C%20X_test_eval%2C%20tabpfn%2C%20tabpfn_predict%2C%20y_ctx%2C%20y_test_eval)%3A%0A%20%20%20%20from%20sklearn.metrics%20import%20mean_absolute_error%2C%20mean_squared_error%2C%20r2_score%0A%0A%20%20%20%20_t0%20%3D%20time.perf_counter()%0A%20%20%20%20tabpfn_price%2C%20tabpfn_prob%2C%20bin_centers%2C%20price_mu%2C%20price_sd%20%3D%20tabpfn_predict(%0A%20%20%20%20%20%20%20%20tabpfn%2C%20X_ctx%2C%20y_ctx%2C%20X_test_eval%2C%20N_BINS%0A%20%20%20%20)%0A%20%20%20%20tabpfn_infer_seconds%20%3D%20time.perf_counter()%20-%20_t0%0A%20%20%20%20tabpfn_rmse%20%3D%20float(np.sqrt(mean_squared_error(y_test_eval%2C%20tabpfn_price)))%0A%20%20%20%20tabpfn_mae%20%3D%20float(mean_absolute_error(y_test_eval%2C%20tabpfn_price))%0A%20%20%20%20tabpfn_r2%20%3D%20float(r2_score(y_test_eval%2C%20tabpfn_price))%0A%20%20%20%20print(%0A%20%20%20%20%20%20%20%20f%22scratch%20TabPFN%20(context%3D1024)%3A%20RMSE%3D%7Btabpfn_rmse%3A.1f%7D%2C%20%22%0A%20%20%20%20%20%20%20%20f%22MAE%3D%7Btabpfn_mae%3A.1f%7D%2C%20R2%3D%7Btabpfn_r2%3A.3f%7D%2C%20forward%3D%7Btabpfn_infer_seconds%3A.2f%7Ds%22%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20bin_centers%2C%0A%20%20%20%20%20%20%20%20mean_absolute_error%2C%0A%20%20%20%20%20%20%20%20mean_squared_error%2C%0A%20%20%20%20%20%20%20%20price_mu%2C%0A%20%20%20%20%20%20%20%20price_sd%2C%0A%20%20%20%20%20%20%20%20r2_score%2C%0A%20%20%20%20%20%20%20%20tabpfn_infer_seconds%2C%0A%20%20%20%20%20%20%20%20tabpfn_mae%2C%0A%20%20%20%20%20%20%20%20tabpfn_prob%2C%0A%20%20%20%20%20%20%20%20tabpfn_r2%2C%0A%20%20%20%20%20%20%20%20tabpfn_rmse%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%85%AC%E5%BC%8F%20TabPFN%20%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%99%E3%82%8B%0A%0A%20%20%20%20%E3%81%93%E3%81%93%E3%81%BE%E3%81%A7%E3%81%AF%E8%87%AA%E5%89%8D%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%A9%E3%83%83%E3%83%81%E5%AE%9F%E8%A3%85%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%8C%E3%80%81**%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%81%AE%E5%85%AC%E5%BC%8F%20TabPFN**%EF%BC%88%60tabpfn%60%20%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%EF%BC%89%E3%82%92%0A%20%20%20%20%E5%90%8C%E3%81%98%20context%E3%83%BBtest%20%E3%81%A7%E8%B5%B0%E3%82%89%E3%81%9B%E3%80%81%E5%88%B0%E9%81%94%E7%82%B9%E3%81%AE%E5%B7%AE%E3%82%92%E6%B8%AC%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AF%20**%60tabpfn%3D%3D2.2.1%60**%20%E3%81%AB%E5%9B%BA%E5%AE%9A%E3%81%97%E3%81%9F%E3%80%82%E6%9C%80%E6%96%B0%E3%81%AE%208.5.0%20%E3%81%AF%E9%87%8D%E3%81%BF%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AB%0A%20%20%20%20%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E5%AF%BE%E8%A9%B1%E7%9A%84%E5%90%8C%E6%84%8F%E3%81%A8%20%60TABPFN_TOKEN%60%EF%BC%88Prior%20Labs%20%E3%81%AE%20API%20%E3%82%AD%E3%83%BC%EF%BC%89%E3%81%8C%E5%BF%85%E9%A0%88%E3%81%A7%E3%80%81%E9%9D%9E%E5%AF%BE%E8%A9%B1%E3%83%BB%E7%A7%98%E5%AF%86%E6%83%85%E5%A0%B1%E3%81%AA%E3%81%97%E3%81%AE%0A%20%20%20%20%E6%9C%AC%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%A7%E3%81%AF%20%60TabPFNLicenseError%60%20%E3%81%AB%E3%81%AA%E3%82%8A%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%80%82%E4%B8%80%E6%96%B9%202.2.1%20%E3%81%AF%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E4%B8%8D%E8%A6%81%E3%81%A7%20HuggingFace%20%E3%81%8B%E3%82%89%0A%20%20%20%20%E9%87%8D%E3%81%BF%E3%82%92%E5%8F%96%E5%BE%97%E3%81%A7%E3%81%8D%E3%80%81%E3%81%97%E3%81%8B%E3%82%82%20nanoTabPFN%20%E3%81%AE%20%60experiment.ipynb%60%20%E3%81%8C%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%9D%E3%81%AE%E3%82%82%E3%81%AE%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%0A%20%20%20%20%E6%9C%AC%20notebook%20%E3%81%AE%E6%AF%94%E8%BC%83%E5%AF%BE%E8%B1%A1%E3%81%A8%E3%81%97%E3%81%A6%E6%9C%80%E3%82%82%E9%81%A9%E5%88%87%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%0A%20%20%20%20import%20%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB%20%60TABPFN_DISABLE_TELEMETRY%3D1%60%20%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E5%85%AC%E5%BC%8F%20TabPFN%20%E3%81%8C%E5%AE%9F%E8%A1%8C%E7%8A%B6%E6%B3%81%E3%82%92%E5%A4%96%E9%83%A8%0A%20%20%20%20%EF%BC%88PostHog%EF%BC%89%E3%81%B8%E9%80%81%E3%82%8B%E3%81%AE%E3%82%92%E6%AD%A2%E3%82%81%E3%82%8B%E3%81%9F%E3%82%81%E3%81%A7%E3%80%81%E5%A4%96%E9%83%A8%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%B8%E5%AE%9F%E8%A1%8C%E6%83%85%E5%A0%B1%E3%82%92%E9%80%81%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%84%E3%81%86%E6%96%B9%E9%87%9D%E3%81%AB%E3%82%88%E3%82%8B%E3%80%82%0A%20%20%20%20fit%20%E3%81%A8%20predict%20%E3%81%AE%E6%99%82%E9%96%93%E3%81%AF%E5%88%86%E3%81%91%E3%81%A6%E8%A8%88%E6%B8%AC%E3%81%99%E3%82%8B%E3%80%82fit%20%E3%81%AE%E5%A4%A7%E5%8D%8A%E3%81%AF**%E5%88%9D%E5%9B%9E%E3%81%AE%E3%83%A2%E3%83%87%E3%83%AB%E3%83%AD%E3%83%BC%E3%83%89**%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E9%87%8D%E3%81%BF%E3%81%AF%E6%97%A2%E3%81%AB%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%AB%0A%20%20%20%20%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E6%B8%88%E3%81%BF%E3%81%AA%E3%81%AE%E3%81%A7%E5%86%8D%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AF%E7%99%BA%E7%94%9F%E3%81%97%E3%81%AA%E3%81%84%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20X_ctx%2C%0A%20%20%20%20X_test_eval%2C%0A%20%20%20%20mean_absolute_error%2C%0A%20%20%20%20mean_squared_error%2C%0A%20%20%20%20r2_score%2C%0A%20%20%20%20y_ctx%2C%0A%20%20%20%20y_test_eval%2C%0A)%3A%0A%20%20%20%20import%20os%0A%20%20%20%20import%20warnings%0A%0A%20%20%20%20os.environ%5B%22TABPFN_DISABLE_TELEMETRY%22%5D%20%3D%20%221%22%0A%20%20%20%20with%20warnings.catch_warnings()%3A%0A%20%20%20%20%20%20%20%20warnings.simplefilter(%22ignore%22)%0A%20%20%20%20%20%20%20%20from%20tabpfn%20import%20TabPFNRegressor%0A%0A%20%20%20%20official_reg%20%3D%20TabPFNRegressor(device%3D(%22cuda%22%20if%20torch.cuda.is_available()%20else%20%22cpu%22))%0A%20%20%20%20with%20warnings.catch_warnings()%3A%0A%20%20%20%20%20%20%20%20warnings.simplefilter(%22ignore%22)%0A%20%20%20%20%20%20%20%20_t%20%3D%20time.perf_counter()%0A%20%20%20%20%20%20%20%20official_reg.fit(X_ctx%2C%20y_ctx)%0A%20%20%20%20%20%20%20%20official_fit_s%20%3D%20time.perf_counter()%20-%20_t%0A%20%20%20%20%20%20%20%20_t%20%3D%20time.perf_counter()%0A%20%20%20%20%20%20%20%20_pred%20%3D%20official_reg.predict(X_test_eval)%0A%20%20%20%20%20%20%20%20official_predict_s%20%3D%20time.perf_counter()%20-%20_t%0A%20%20%20%20official_rmse%20%3D%20float(np.sqrt(mean_squared_error(y_test_eval%2C%20_pred)))%0A%20%20%20%20official_mae%20%3D%20float(mean_absolute_error(y_test_eval%2C%20_pred))%0A%20%20%20%20official_r2%20%3D%20float(r2_score(y_test_eval%2C%20_pred))%0A%20%20%20%20print(%0A%20%20%20%20%20%20%20%20f%22%E5%85%AC%E5%BC%8F%20TabPFN%202.2.1%20(context%3D1024)%3A%20RMSE%3D%7Bofficial_rmse%3A.1f%7D%2C%20MAE%3D%7Bofficial_mae%3A.1f%7D%2C%20%22%0A%20%20%20%20%20%20%20%20f%22R2%3D%7Bofficial_r2%3A.4f%7D%2C%20fit%3D%7Bofficial_fit_s%3A.2f%7Ds(%E5%88%9D%E5%9B%9E%E3%83%AD%E3%83%BC%E3%83%89%E8%BE%BC%E3%81%BF)%2C%20%22%0A%20%20%20%20%20%20%20%20f%22predict%3D%7Bofficial_predict_s%3A.2f%7Ds%22%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20official_fit_s%2C%0A%20%20%20%20%20%20%20%20official_mae%2C%0A%20%20%20%20%20%20%20%20official_predict_s%2C%0A%20%20%20%20%20%20%20%20official_r2%2C%0A%20%20%20%20%20%20%20%20official_reg%2C%0A%20%20%20%20%20%20%20%20official_rmse%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E9%9B%A2%E6%95%A3%E5%8C%96%E3%83%95%E3%83%AD%E3%82%A2%20%E2%80%94%20%E3%81%AA%E3%81%9C%E5%9B%9E%E5%B8%B0%20RMSE%20%E3%81%AB%E3%81%AF%E4%B8%8B%E9%99%90%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%8B%0A%0A%20%20%20%20%E3%81%93%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%AE%E5%9B%9E%E5%B8%B0%E4%BA%88%E6%B8%AC%E3%81%AF%E3%83%93%E3%83%B3%E7%A2%BA%E7%8E%87%E3%81%AE%E6%9C%9F%E5%BE%85%E5%80%A4%20%24%5Chat%20z%3D%5Csum_k%20p_k%20c_k%24%20%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E9%87%8D%E8%A6%81%E3%81%AA%E4%BA%8B%E5%AE%9F%E3%81%8C%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20**%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8C%20test%20%E8%A1%8C%E3%81%AE%E6%AD%A3%E3%81%97%E3%81%84%E3%83%93%E3%83%B3%E3%82%92%20100%25%20%E8%A8%80%E3%81%84%E5%BD%93%E3%81%A6%E3%81%9F%E3%81%A8%E3%81%97%E3%81%A6%E3%82%82%E3%80%81%E3%83%93%E3%83%B3%E5%86%85%E3%81%AE%E4%BE%A1%E6%A0%BC%E3%81%B0%E3%82%89%E3%81%A4%E3%81%8D%E3%81%AF%E6%B6%88%E3%81%9B%E3%81%AA%E3%81%84**%E3%80%82%0A%20%20%20%20%E4%BA%88%E6%B8%AC%E3%81%AF%E3%81%9D%E3%81%AE%E3%83%93%E3%83%B3%E3%81%AE%E4%B8%AD%E5%BF%83%EF%BC%88%E4%BB%A3%E8%A1%A8%E5%80%A4%EF%BC%89%24c_k%24%20%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E7%9C%9F%E3%81%AE%E4%BE%A1%E6%A0%BC%E3%81%A8%E3%81%AE%E5%B7%AE%E3%81%AF%E3%83%93%E3%83%B3%E5%B9%85%E3%81%AE%E5%88%86%E3%81%A0%E3%81%91%E5%BF%85%E3%81%9A%E6%AE%8B%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%81%A4%E3%81%BE%E3%82%8A%20RMSE%20%E3%81%AB%E3%81%AF%20%24K%24%20%E3%81%A0%E3%81%91%E3%81%A7%E6%B1%BA%E3%81%BE%E3%82%8B**%E4%B8%8B%E9%99%90%EF%BC%88%E9%9B%A2%E6%95%A3%E5%8C%96%E3%83%95%E3%83%AD%E3%82%A2%EF%BC%89**%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%80%82%0A%0A%20%20%20%20diamonds%20%E3%81%AE%20price%20%E3%81%AF%E5%8F%B3%E3%81%AB%E5%BC%B7%E3%81%8F%E6%AD%AA%E3%82%93%E3%81%A7%E3%81%8A%E3%82%8A%E3%80%81%24K%3D10%24%20%E3%81%AE%E5%88%86%E4%BD%8D%E3%83%93%E3%83%B3%E3%81%A0%E3%81%A8%E6%9C%80%E4%B8%8A%E4%BD%8D%E3%83%93%E3%83%B3%EF%BC%8890%E2%80%93100%20%E3%83%91%E3%83%BC%E3%82%BB%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%AB%EF%BC%89%0A%20%20%20%20%E3%81%A0%E3%81%91%E3%81%A7%E6%A6%82%E3%81%AD%2013k%E2%80%9318.8k%20%E3%83%89%E3%83%AB%E3%82%92%E8%A6%86%E3%81%86%E3%80%82%E3%81%93%E3%81%AE%201%20%E3%83%93%E3%83%B3%E3%81%AE%E5%86%85%E9%83%A8%E3%81%B0%E3%82%89%E3%81%A4%E3%81%8D%E3%81%8C%E3%83%95%E3%83%AD%E3%82%A2%E3%82%92%E6%8A%BC%E3%81%97%E4%B8%8A%E3%81%92%E3%82%8B%E3%80%82%0A%20%20%20%20%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AF%20%24K%24%20%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%BB%E3%81%A9%E4%B8%8B%E3%81%8C%E3%82%8B%EF%BC%88%60num_outputs%60%20%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%A0%E3%81%91%E3%81%A7%E8%A8%88%E7%AE%97%E3%82%B3%E3%82%B9%E3%83%88%E3%81%AF%E3%81%BB%E3%81%BC%E4%B8%8D%E5%A4%89%EF%BC%89%E3%80%82%0A%0A%20%20%20%20%E4%B8%8B%E3%81%A7%E3%81%AF**%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E4%BA%88%E6%B8%AC%E5%99%A8**%EF%BC%88test%20%E8%A1%8C%E3%81%AE%E7%9C%9F%E3%81%AE%E4%BE%A1%E6%A0%BC%E3%81%8B%E3%82%89%E5%B1%9E%E3%81%99%E3%82%8B%E3%83%93%E3%83%B3%E3%82%92%E6%B1%BA%E3%82%81%E3%80%81%E3%81%9D%E3%81%AE%20context%20%E5%B9%B3%E5%9D%87%20%24c_k%24%20%E3%82%92%E4%BA%88%E6%B8%AC%E5%80%A4%E3%81%A8%E3%81%99%E3%82%8B%EF%BC%9D%0A%20%20%20%20%E3%83%93%E3%83%B3%E3%82%92%E5%AE%8C%E5%85%A8%E3%81%AB%E5%BD%93%E3%81%A6%E3%81%9F%E5%A0%B4%E5%90%88%EF%BC%89%E3%82%92%20%24K%5Cin%5C%7B10%2C16%2C20%2C40%2C80%5C%7D%24%20%E3%81%A7%E8%A9%95%E4%BE%A1%E3%81%99%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AB%E3%82%88%E3%82%8A%E3%80%8C%24K%3D10%24%20%E3%81%A7%E3%81%AF%E3%81%A9%E3%82%93%E3%81%AA%E3%81%AB%E8%89%AF%E3%81%84%0A%20%20%20%20%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A7%E3%82%82%20RMSE%20%E3%81%AF%E3%81%93%E3%81%AE%E5%80%A4%E3%82%88%E3%82%8A%E4%B8%8B%E3%81%92%E3%82%89%E3%82%8C%E3%81%AA%E3%81%84%E3%80%8D%E3%81%93%E3%81%A8%E3%81%8C%E6%95%B0%E5%80%A4%E3%81%A7%E5%88%86%E3%81%8B%E3%82%8B%E3%80%82%E6%9C%AC%E5%AE%B6%20TabPFN%20v2%20%E3%81%8C%E5%9B%9E%E5%B8%B0%E3%81%AB%E5%A4%9A%E6%95%B0%E3%81%AE%E3%83%93%E3%83%B3%0A%20%20%20%20%EF%BC%88bar%20distribution%20%2F%20Riemann%20%E5%88%86%E5%B8%83%EF%BC%89%E3%82%92%E4%BD%BF%E3%81%86%E3%81%AE%E3%81%AF%E3%80%81%E3%81%BE%E3%81%95%E3%81%AB%E3%81%93%E3%81%AE%E3%83%95%E3%83%AD%E3%82%A2%E3%82%92%E5%8D%81%E5%88%86%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(tabpfn_rmse%2C%20y_ctx%2C%20y_test_eval)%3A%0A%20%20%20%20def%20_oracle_floor(price_ctx%2C%20price_test%2C%20num_bins)%3A%0A%20%20%20%20%20%20%20%20mu%20%3D%20price_ctx.mean()%0A%20%20%20%20%20%20%20%20sd%20%3D%20price_ctx.std()%20%2B%201e-8%0A%20%20%20%20%20%20%20%20z_ctx%20%3D%20(price_ctx%20-%20mu)%20%2F%20sd%0A%20%20%20%20%20%20%20%20z_test%20%3D%20(price_test%20-%20mu)%20%2F%20sd%0A%20%20%20%20%20%20%20%20edges%20%3D%20np.quantile(z_ctx%2C%20np.linspace(0%2C%201%2C%20num_bins%20%2B%201)%5B1%3A-1%5D)%0A%20%20%20%20%20%20%20%20lab_ctx%20%3D%20np.digitize(z_ctx%2C%20edges)%0A%20%20%20%20%20%20%20%20lab_test%20%3D%20np.digitize(z_test%2C%20edges)%0A%20%20%20%20%20%20%20%20centers%20%3D%20np.array(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20z_ctx%5Blab_ctx%20%3D%3D%20k%5D.mean()%20if%20np.any(lab_ctx%20%3D%3D%20k)%20else%20edges%5Bmin(k%2C%20len(edges)%20-%201)%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20k%20in%20range(num_bins)%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20pred%20%3D%20mu%20%2B%20sd%20*%20centers%5Blab_test%5D%0A%20%20%20%20%20%20%20%20return%20float(np.sqrt(np.mean((pred%20-%20price_test)%20**%202)))%0A%0A%20%20%20%20_ks%20%3D%20%5B10%2C%2016%2C%2020%2C%2040%2C%2080%5D%0A%20%20%20%20floor_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22K%22%3A%20_ks%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22oracle_floor_RMSE%22%3A%20%5Bround(_oracle_floor(y_ctx%2C%20y_test_eval%2C%20_k)%2C%201)%20for%20_k%20in%20_ks%5D%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20print(%0A%20%20%20%20%20%20%20%20f%22%E5%8F%82%E8%80%83%3A%20%E3%81%93%E3%81%AE%E3%83%A2%E3%83%87%E3%83%AB(K%3D16)%E3%81%AE%E5%AE%9F%E6%B8%AC%20RMSE%3D%7Btabpfn_rmse%3A.0f%7D%20%2F%20%22%0A%20%20%20%20%20%20%20%20f%22K%3D16%20%E3%81%AE%E3%83%95%E3%83%AD%E3%82%A2%3D%7B_oracle_floor(y_ctx%2C%20y_test_eval%2C%2016)%3A.0f%7D%20%2F%20%22%0A%20%20%20%20%20%20%20%20f%22price%20%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%3D%7By_test_eval.std()%3A.0f%7D%20(%E5%AE%9A%E6%95%B0%E4%BA%88%E6%B8%AC%E3%81%AE%20RMSE%20%E7%9B%AE%E5%AE%89)%22%0A%20%20%20%20)%0A%20%20%20%20floor_df%0A%20%20%20%20return%20(floor_df%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AF%20%24K%3D10%24%20%E3%81%A7%E5%A4%A7%E3%81%8D%E3%81%8F%E3%80%81%24K%24%20%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%A8%E6%80%A5%E9%80%9F%E3%81%AB%E4%B8%8B%E3%81%8C%E3%82%8B%E3%80%82%E6%9C%AC%20notebook%20%E3%81%8C%E5%88%9D%E7%89%88%E3%81%AE%20%24K%3D10%24%20%E3%81%8B%E3%82%89%20%24K%3D16%24%20%E3%81%B8%0A%20%20%20%20%E5%A2%97%E3%82%84%E3%81%97%E3%81%9F%E3%81%AE%E3%81%AF%E3%81%93%E3%81%AE%E3%81%9F%E3%82%81%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%20%24K%24%20%E3%82%92%E4%B8%8A%E3%81%92%E3%82%8C%E3%81%B0%E7%84%A1%E6%9D%A1%E4%BB%B6%E3%81%AB%E8%89%AF%E3%81%8F%E3%81%AA%E3%82%8B%E3%82%8F%E3%81%91%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%80%82%E3%83%93%E3%83%B3%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%A8%0A%20%20%20%201%20%E3%83%93%E3%83%B3%E3%81%82%E3%81%9F%E3%82%8A%E3%81%AE%E5%AD%A6%E7%BF%92%E4%BE%8B%E3%81%8C%E6%B8%9B%E3%82%8A%E5%88%86%E9%A1%9E%E3%81%8C%E9%9B%A3%E3%81%97%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81**%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8C%E7%B4%B0%E3%81%8B%E3%81%84%E3%83%93%E3%83%B3%E3%82%92%E8%A7%A3%E5%83%8F%E3%81%A7%E3%81%8D%E3%82%8B%E7%AF%84%E5%9B%B2**%E3%81%A7%E3%81%97%E3%81%8B%0A%20%20%20%20%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AE%E4%BD%8E%E4%B8%8B%E3%82%92%E6%B4%BB%E3%81%8B%E3%81%9B%E3%81%AA%E3%81%84%E3%80%82%E4%BA%88%E5%82%99%E5%AE%9F%E9%A8%93%E3%81%A7%E3%81%AF%E6%9C%AC%E5%AE%9F%E8%A3%85%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%81%A7%20%24K%24%20%E3%82%92%2020%20%E4%BB%A5%E4%B8%8A%E3%81%AB%E3%81%99%E3%82%8B%E3%81%A8%E5%88%86%E9%A1%9E%E3%81%8C%E8%BF%BD%E3%81%84%E3%81%A4%E3%81%8B%E3%81%9A%0A%20%20%20%20%E5%AE%9F%E6%B8%AC%20RMSE%20%E3%81%AF%E3%81%8B%E3%81%88%E3%81%A3%E3%81%A6%E6%82%AA%E5%8C%96%E3%81%97%E3%81%9F%E3%81%9F%E3%82%81%E3%80%81%E3%83%95%E3%83%AD%E3%82%A2%E4%BD%8E%E4%B8%8B%E3%81%A8%E5%88%86%E9%A1%9E%E9%9B%A3%E5%BA%A6%E3%81%AE%E9%87%A3%E3%82%8A%E5%90%88%E3%81%86%20%24K%3D16%24%20%E3%82%92%E6%8E%A1%E7%94%A8%E3%81%97%E3%81%9F%E3%80%82%0A%20%20%20%20%E5%AE%9F%E6%B8%AC%20RMSE%20%E3%81%8C%E3%83%95%E3%83%AD%E3%82%A2%E3%82%88%E3%82%8A%E9%AB%98%E3%81%84%E3%81%AE%E3%81%AF%E3%80%81%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E3%83%93%E3%83%B3%E4%BA%88%E6%B8%AC%E3%81%8C%E5%AE%8C%E5%85%A8%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%EF%BC%88%EF%BC%9D%E8%A1%A8%E7%8F%BE%E5%8A%9B%E3%83%BB%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E9%87%8F%E3%81%AE%E9%99%90%E7%95%8C%EF%BC%89%E3%82%92%E6%84%8F%E5%91%B3%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E9%95%B7%E3%81%AE%E5%BD%B1%E9%9F%BF%0A%0A%20%20%20%20TabPFN%20%E3%81%AE%E7%B2%BE%E5%BA%A6%E3%81%AF%20context%20%E3%81%AE%E8%A1%8C%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E4%BE%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%80%82context%20%E3%82%92%2064%20%E2%86%92%201024%20%E3%81%A8%E5%A2%97%E3%82%84%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%20RMSE%20%E3%82%92%E3%80%81%0A%20%20%20%20scratch%20%E5%AE%9F%E8%A3%85%E3%81%A8%E5%85%AC%E5%BC%8F%20TabPFN%20%E3%81%AE%E4%B8%A1%E6%96%B9%E3%81%A7%E6%B8%AC%E3%82%8B%E3%80%82%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B%20context%20%E8%A1%8C%E3%81%AF%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E5%90%84%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%A7%204%20%E5%9B%9E%0A%20%20%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%97%E3%81%A6%E5%B9%B3%E5%9D%87%E3%81%97%E3%80%81%E3%81%B0%E3%82%89%E3%81%A4%E3%81%8D%E3%82%92%E5%9D%87%E3%81%99%EF%BC%88%E4%B8%A1%E8%80%85%E3%81%AF%E5%90%8C%E3%81%98%20context%20%E9%83%A8%E5%88%86%E9%9B%86%E5%90%88%E3%82%92%E5%85%B1%E6%9C%89%E3%81%99%E3%82%8B%EF%BC%89%E3%80%82%0A%20%20%20%20prior%20%E5%81%B4%E3%81%A7%E5%88%86%E5%89%B2%E4%BD%8D%E7%BD%AE%E3%82%92%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E5%8C%96%E3%81%97%E3%81%9F%E3%81%9F%E3%82%81%E3%80%81%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%A7%E8%A6%8B%E3%81%9F%E6%95%B0%E7%99%BE%E8%A1%8C%E3%81%8B%E3%82%89%201024%20%E8%A1%8C%E3%81%B8%E3%81%AE%E5%A4%96%E6%8C%BF%E3%81%A7%E3%82%82%0A%20%20%20%20%E8%A1%8C%E6%95%B0%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%BB%E3%81%A9%20RMSE%20%E3%81%8C%E4%B8%8B%E3%81%8C%E3%82%8B%E5%82%BE%E5%90%91%E3%81%8C%E5%87%BA%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%80%8C%E6%96%87%E8%84%88%E9%95%B7%E3%81%AE%E7%AF%84%E5%9B%B2%E3%81%A7%E3%81%AF%E8%A1%8C%E3%81%8C%E5%A2%97%E3%81%88%E3%82%8B%E3%81%BB%E3%81%A9%E8%B3%A2%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%8C%E3%80%81%0A%20%20%20%20GBDT%20%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E4%BD%95%E4%B8%87%E8%A1%8C%E3%82%82%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E6%9C%AC%E8%B3%AA%E7%9A%84%E3%81%AA%E5%88%B6%E7%B4%84%E3%82%92%E7%A4%BA%E3%81%99%E3%80%81%E3%81%93%E3%81%AE%20notebook%20%E3%81%A7%E6%9C%80%E3%82%82%E7%A4%BA%E5%94%86%E7%9A%84%E3%81%AA%E7%B5%90%E6%9E%9C%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20N_BINS%2C%0A%20%20%20%20X_pool%2C%0A%20%20%20%20X_test_eval%2C%0A%20%20%20%20official_reg%2C%0A%20%20%20%20tabpfn%2C%0A%20%20%20%20tabpfn_predict%2C%0A%20%20%20%20y_pool%2C%0A%20%20%20%20y_test_eval%2C%0A)%3A%0A%20%20%20%20import%20warnings%20as%20_warn_ctx%0A%0A%20%20%20%20from%20sklearn.metrics%20import%20mean_squared_error%20as%20_mse_ctx%0A%0A%20%20%20%20context_sizes%20%3D%20%5B64%2C%20128%2C%20256%2C%20512%2C%201024%5D%0A%20%20%20%20_n_repeat%20%3D%204%0A%20%20%20%20rmse_by_context%20%3D%20%5B%5D%0A%20%20%20%20official_rmse_by_context%20%3D%20%5B%5D%0A%20%20%20%20_rng%20%3D%20np.random.default_rng(1)%0A%20%20%20%20for%20_n%20in%20context_sizes%3A%0A%20%20%20%20%20%20%20%20_reps%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20_reps_off%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(_n_repeat)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_idx%20%3D%20_rng.choice(len(X_pool)%2C%20_n%2C%20replace%3DFalse)%0A%20%20%20%20%20%20%20%20%20%20%20%20_xc%2C%20_yc%20%3D%20X_pool%5B_idx%5D%2C%20y_pool%5B_idx%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20_price%2C%20_prob%2C%20_c%2C%20_mu%2C%20_sd%20%3D%20tabpfn_predict(tabpfn%2C%20_xc%2C%20_yc%2C%20X_test_eval%2C%20N_BINS)%0A%20%20%20%20%20%20%20%20%20%20%20%20_reps.append(float(np.sqrt(_mse_ctx(y_test_eval%2C%20_price))))%0A%20%20%20%20%20%20%20%20%20%20%20%20with%20_warn_ctx.catch_warnings()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_warn_ctx.simplefilter(%22ignore%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20official_reg.fit(_xc%2C%20_yc)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_po%20%3D%20official_reg.predict(X_test_eval)%0A%20%20%20%20%20%20%20%20%20%20%20%20_reps_off.append(float(np.sqrt(_mse_ctx(y_test_eval%2C%20_po))))%0A%20%20%20%20%20%20%20%20rmse_by_context.append(float(np.mean(_reps)))%0A%20%20%20%20%20%20%20%20official_rmse_by_context.append(float(np.mean(_reps_off)))%0A%20%20%20%20context_rmse_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22context_size%22%3A%20context_sizes%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22scratch_RMSE%22%3A%20rmse_by_context%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22official_RMSE%22%3A%20official_rmse_by_context%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20print(%22scratch%20%20RMSE%20by%20context%20(4%20%E5%9B%9E%E5%B9%B3%E5%9D%87)%3A%20%22%20%2B%20%22%2C%20%22.join(%0A%20%20%20%20%20%20%20%20f%22%7B_n%7D%3A%7B_r%3A.0f%7D%22%20for%20_n%2C%20_r%20in%20zip(context_sizes%2C%20rmse_by_context)%0A%20%20%20%20))%0A%20%20%20%20print(%22official%20RMSE%20by%20context%20(4%20%E5%9B%9E%E5%B9%B3%E5%9D%87)%3A%20%22%20%2B%20%22%2C%20%22.join(%0A%20%20%20%20%20%20%20%20f%22%7B_n%7D%3A%7B_r%3A.0f%7D%22%20for%20_n%2C%20_r%20in%20zip(context_sizes%2C%20official_rmse_by_context)%0A%20%20%20%20))%0A%20%20%20%20context_rmse_df%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20context_rmse_df%2C%0A%20%20%20%20%20%20%20%20context_sizes%2C%0A%20%20%20%20%20%20%20%20official_rmse_by_context%2C%0A%20%20%20%20%20%20%20%20rmse_by_context%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(context_sizes%2C%20official_rmse_by_context%2C%20rmse_by_context)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(6.5%2C%203.6))%0A%20%20%20%20_ax.plot(context_sizes%2C%20rmse_by_context%2C%20%22o-%22%2C%20color%3D%22%234C72B0%22%2C%20label%3D%22scratch%20TabPFN%22)%0A%20%20%20%20_ax.plot(context_sizes%2C%20official_rmse_by_context%2C%20%22s--%22%2C%20color%3D%22%23C44E52%22%2C%20label%3D%22%E5%85%AC%E5%BC%8F%20TabPFN%202.2.1%22)%0A%20%20%20%20_ax.set(xscale%3D%22log%22%2C%20xlabel%3D%22context%20size%20(%E8%A1%8C%E6%95%B0%2C%20log)%22%2C%20ylabel%3D%22RMSE%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22context%20vs%20RMSE%20(4%20%E5%9B%9E%E5%B9%B3%E5%9D%87)%3A%20scratch%20%E3%81%A8%E5%85%AC%E5%BC%8F%E3%81%AE%E6%AF%94%E8%BC%83%22)%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E4%BA%88%E6%B8%AC%E5%88%86%E5%B8%83%E3%81%AE%E5%8F%AF%E8%A6%96%E5%8C%96%0A%0A%20%20%20%20TabPFN%20%E3%81%AF%E7%82%B9%E6%8E%A8%E5%AE%9A%E3%81%A7%E3%81%AA%E3%81%8F**%E3%83%93%E3%83%B3%E4%B8%8A%E3%81%AE%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83**%E3%82%92%E8%BF%94%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E7%82%B9%E4%BA%88%E6%B8%AC%E3%81%A0%E3%81%91%E3%81%AE%20GBDT%20%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E6%98%8E%E7%A2%BA%E3%81%AA%E5%88%A9%E7%82%B9%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20test%20%E3%81%AE%E6%95%B0%E5%80%8B%E3%81%AE%E3%83%80%E3%82%A4%E3%83%A4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%80%81%E3%83%93%E3%83%B3%E4%B8%AD%E5%BF%83%E3%81%AE%E4%BE%A1%E6%A0%BC%E3%82%92%E6%A8%AA%E8%BB%B8%E3%81%AB%E7%A2%BA%E7%8E%87%E3%82%92%E6%A3%92%E3%82%B0%E3%83%A9%E3%83%95%E3%81%A7%E7%A4%BA%E3%81%99%E3%80%82%E5%AE%9F%E9%9A%9B%E3%81%AE%E4%BE%A1%E6%A0%BC%EF%BC%88%E8%B5%A4%E7%A0%B4%E7%B7%9A%EF%BC%89%E3%81%8C%0A%20%20%20%20%E5%88%86%E5%B8%83%E3%81%AE%E3%81%A9%E3%81%93%E3%81%AB%E4%BD%8D%E7%BD%AE%E3%81%99%E3%82%8B%E3%81%8B%E3%82%92%E8%A6%8B%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(bin_centers%2C%20price_mu%2C%20price_sd%2C%20tabpfn_prob%2C%20y_test_eval)%3A%0A%20%20%20%20_centers_price%20%3D%20price_mu%20%2B%20price_sd%20*%20bin_centers%0A%20%20%20%20_idxs%20%3D%20%5B0%2C%201%2C%202%5D%0A%20%20%20%20_fig%2C%20_axes%20%3D%20plt.subplots(1%2C%203%2C%20figsize%3D(11%2C%203.4))%0A%20%20%20%20for%20_ax%2C%20_i%20in%20zip(_axes%2C%20_idxs)%3A%0A%20%20%20%20%20%20%20%20_ax.bar(range(len(bin_centers))%2C%20tabpfn_prob%5B_i%5D%2C%20color%3D%22%2355A868%22)%0A%20%20%20%20%20%20%20%20_ax.set_xticks(range(len(bin_centers)))%0A%20%20%20%20%20%20%20%20_ax.set_xticklabels(%5Bf%22%7Bv%3A.0f%7D%22%20for%20v%20in%20_centers_price%5D%2C%20rotation%3D60%2C%20fontsize%3D7)%0A%20%20%20%20%20%20%20%20_true_bin%20%3D%20np.argmin(np.abs(_centers_price%20-%20y_test_eval%5B_i%5D))%0A%20%20%20%20%20%20%20%20_ax.axvline(_true_bin%2C%20color%3D%22red%22%2C%20ls%3D%22--%22%2C%20lw%3D1.5)%0A%20%20%20%20%20%20%20%20_ax.set(title%3Df%22test%20%23%7B_i%7D%20%E5%AE%9F%E4%BE%A1%E6%A0%BC%3D%7By_test_eval%5B_i%5D%3A.0f%7D%22%2C%20xlabel%3D%22bin%20%E4%B8%AD%E5%BF%83%E4%BE%A1%E6%A0%BC%22%2C%20ylabel%3D%22prob%22)%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%88%86%E4%BD%8D%E3%82%AF%E3%83%A9%E3%82%B9%E5%88%86%E9%A1%9E%20%E2%80%94%20%E5%90%8C%E3%81%98%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E4%BD%BF%E3%81%84%E5%9B%9E%E3%81%99%0A%0A%20%20%20%20price%20%E3%82%92%20context%20%E3%81%AE%E5%9B%9B%E5%88%86%E4%BD%8D%E3%81%A7%204%20%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AB%E5%88%86%E3%81%91%E3%80%81**%E5%90%8C%E3%81%98%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%83%A2%E3%83%87%E3%83%AB**%E3%81%A7%E5%88%86%E9%A1%9E%E3%82%82%E3%81%93%E3%81%AA%E3%81%99%E3%80%82%0A%20%20%20%20%E5%90%84%E3%83%93%E3%83%B3%E4%B8%AD%E5%BF%83%E3%81%8C%E5%B1%9E%E3%81%99%E3%82%8B%E5%9B%9B%E5%88%86%E4%BD%8D%E3%81%AB%E3%83%93%E3%83%B3%E7%A2%BA%E7%8E%87%E3%82%92%E8%B6%B3%E3%81%97%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A6%204%20%E3%82%AF%E3%83%A9%E3%82%B9%E7%A2%BA%E7%8E%87%E3%81%AB%E3%81%97%E3%80%81argmax%20%E3%81%A7%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%92%E6%B1%BA%E3%82%81%E3%82%8B%E3%80%82%0A%20%20%20%20%E6%AD%A3%E8%A7%A3%E7%8E%87%E3%81%A8%20macro-F1%20%E3%82%92%E6%B8%AC%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20N_BINS%2C%0A%20%20%20%20bin_centers%2C%0A%20%20%20%20price_mu%2C%0A%20%20%20%20price_sd%2C%0A%20%20%20%20tabpfn_prob%2C%0A%20%20%20%20y_ctx%2C%0A%20%20%20%20y_test_eval%2C%0A)%3A%0A%20%20%20%20from%20sklearn.metrics%20import%20accuracy_score%2C%20f1_score%0A%0A%20%20%20%20_q_edges%20%3D%20np.quantile(y_ctx%2C%20%5B0.25%2C%200.5%2C%200.75%5D)%0A%20%20%20%20_centers_price%20%3D%20price_mu%20%2B%20price_sd%20*%20bin_centers%0A%20%20%20%20_bin_to_class%20%3D%20np.digitize(_centers_price%2C%20_q_edges)%0A%20%20%20%20_class_prob%20%3D%20np.zeros((len(tabpfn_prob)%2C%204))%0A%20%20%20%20for%20_k%20in%20range(N_BINS)%3A%0A%20%20%20%20%20%20%20%20_class_prob%5B%3A%2C%20_bin_to_class%5B_k%5D%5D%20%2B%3D%20tabpfn_prob%5B%3A%2C%20_k%5D%0A%20%20%20%20_pred_class%20%3D%20_class_prob.argmax(axis%3D1)%0A%20%20%20%20_true_class%20%3D%20np.digitize(y_test_eval%2C%20_q_edges)%0A%20%20%20%20tabpfn_cls_acc%20%3D%20float(accuracy_score(_true_class%2C%20_pred_class))%0A%20%20%20%20tabpfn_cls_f1%20%3D%20float(f1_score(_true_class%2C%20_pred_class%2C%20average%3D%22macro%22))%0A%20%20%20%20print(%0A%20%20%20%20%20%20%20%20f%22%E5%88%86%E4%BD%8D%E3%82%AF%E3%83%A9%E3%82%B9%E5%88%86%E9%A1%9E%3A%20accuracy%3D%7Btabpfn_cls_acc%3A.3f%7D%2C%20macro-F1%3D%7Btabpfn_cls_f1%3A.3f%7D%20%22%0A%20%20%20%20%20%20%20%20f%22(4%20%E3%82%AF%E3%83%A9%E3%82%B9%2C%20%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%3D0.25)%22%0A%20%20%20%20)%0A%20%20%20%20return%20tabpfn_cls_acc%2C%20tabpfn_cls_f1%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%85%AC%E5%BC%8F%20TabPFN%E3%83%BBLightGBM%E3%83%BBscikit-learn%20%E3%81%A8%E3%81%AE%E6%AF%94%E8%BC%83%0A%0A%20%20%20%20%E5%90%8C%E3%81%98%20context%EF%BC%881024%20%E8%A1%8C%EF%BC%89%EF%BC%8F%E5%90%8C%E3%81%98%20test%EF%BC%881500%20%E8%A1%8C%EF%BC%89%E3%81%A7%E5%9B%9E%E5%B8%B0%E6%80%A7%E8%83%BD%E3%82%92%E6%AF%94%E3%81%B9%E3%82%8B%E3%80%82%E6%AF%94%E8%BC%83%E5%AF%BE%E8%B1%A1%E3%81%AF%E6%AC%A1%E3%81%AE%E9%80%9A%E3%82%8A%E3%80%82%0A%0A%20%20%20%20-%20**scratch%20TabPFN**%EF%BC%9A%E8%87%AA%E5%89%8D%E5%AE%9F%E8%A3%85%E3%80%82%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%AE%E3%81%BF%E3%80%82fit%20%E6%99%82%E9%96%93%E3%81%AF%E3%81%BB%E3%81%BC%200%20%E3%81%A0%E3%81%8C%E3%80%81%E3%81%93%E3%82%8C%E3%81%A8%E3%81%AF%E5%88%A5%E3%81%AB**%E4%B8%80%E5%BA%A6%E3%81%8D%E3%82%8A%E3%81%AE%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%82%B3%E3%82%B9%E3%83%88**%E3%81%8C%E3%81%8B%E3%81%8B%E3%82%8B%0A%20%20%20%20%20%20%EF%BC%88%E3%81%93%E3%81%AE%E7%82%B9%E3%81%AF%E6%98%8E%E7%A2%BA%E3%81%AB%E5%8C%BA%E5%88%A5%E3%81%97%E3%81%A6%E8%A1%A8%E3%81%AB%E4%BD%B5%E8%A8%98%E3%81%99%E3%82%8B%EF%BC%89%E3%80%82%0A%20%20%20%20-%20**%E5%85%AC%E5%BC%8F%20TabPFN%202.2.1**%EF%BC%9A%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%81%AE%E6%9C%AC%E7%89%A9%E3%80%82fit%E3%83%BBpredict%20%E6%99%82%E9%96%93%E3%82%92%E5%88%86%E3%81%91%E3%81%A6%E8%A8%98%E9%8C%B2%E3%81%97%E3%80%81fit%20%E3%81%AE%E5%A4%A7%E5%8D%8A%E3%81%8C%E5%88%9D%E5%9B%9E%E3%81%AE%0A%20%20%20%20%20%20%E3%83%A2%E3%83%87%E3%83%AB%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E6%B3%A8%E8%A8%98%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20-%20**LightGBM%20(context)**%EF%BC%9A%E5%90%8C%E3%81%98%201024%20%E8%A1%8C%E3%81%A0%E3%81%91%E3%81%A7%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%20LGBMRegressor%E3%80%82%0A%20%20%20%20-%20**LightGBM%20(full)**%EF%BC%9A%E5%85%A8%20train%20%E3%83%87%E3%83%BC%E3%82%BF%EF%BC%88%E7%B4%84%205%20%E4%B8%87%E8%A1%8C%EF%BC%89%E3%81%A7%E5%AD%A6%E7%BF%92%E3%80%82TabPFN%20%E3%81%AB%E3%81%AF%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84**%E4%B8%8D%E5%85%AC%E5%B9%B3%E3%81%AA%E4%B8%8A%E9%99%90**%E3%81%A8%E3%81%97%E3%81%A6%E6%98%8E%E7%A4%BA%E3%81%99%E3%82%8B%E3%80%82%0A%20%20%20%20-%20**RandomForest%20%2F%20Ridge%20%2F%20%E5%B9%B3%E5%9D%87%E4%BA%88%E6%B8%AC**%EF%BC%9A%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E6%AF%94%E8%BC%83%E7%94%A8%E3%81%AE%20scikit-learn%20%E3%83%99%E3%83%BC%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%B3%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20X_ctx%2C%0A%20%20%20%20X_pool%2C%0A%20%20%20%20X_test_eval%2C%0A%20%20%20%20mean_absolute_error%2C%0A%20%20%20%20mean_squared_error%2C%0A%20%20%20%20official_fit_s%2C%0A%20%20%20%20official_mae%2C%0A%20%20%20%20official_predict_s%2C%0A%20%20%20%20official_r2%2C%0A%20%20%20%20official_rmse%2C%0A%20%20%20%20r2_score%2C%0A%20%20%20%20tabpfn_infer_seconds%2C%0A%20%20%20%20tabpfn_mae%2C%0A%20%20%20%20tabpfn_r2%2C%0A%20%20%20%20tabpfn_rmse%2C%0A%20%20%20%20train_seconds%2C%0A%20%20%20%20y_ctx%2C%0A%20%20%20%20y_pool%2C%0A%20%20%20%20y_test_eval%2C%0A)%3A%0A%20%20%20%20import%20lightgbm%20as%20lgb%0A%20%20%20%20from%20sklearn.ensemble%20import%20RandomForestRegressor%0A%20%20%20%20from%20sklearn.linear_model%20import%20Ridge%0A%0A%20%20%20%20def%20_fit_eval(model%2C%20xtr%2C%20ytr)%3A%0A%20%20%20%20%20%20%20%20_t%20%3D%20time.perf_counter()%0A%20%20%20%20%20%20%20%20model.fit(xtr%2C%20ytr)%0A%20%20%20%20%20%20%20%20_fit_s%20%3D%20time.perf_counter()%20-%20_t%0A%20%20%20%20%20%20%20%20_pred%20%3D%20model.predict(X_test_eval)%0A%20%20%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20float(np.sqrt(mean_squared_error(y_test_eval%2C%20_pred)))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20float(mean_absolute_error(y_test_eval%2C%20_pred))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20float(r2_score(y_test_eval%2C%20_pred))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_fit_s%2C%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20_rows%20%3D%20%5B%5D%0A%20%20%20%20_rows.append(%5B%22scratch%20TabPFN%20(ctx%3D1024%2C%20%E9%A0%86%E4%BC%9D%E6%92%AD)%22%2C%20tabpfn_rmse%2C%20tabpfn_mae%2C%20tabpfn_r2%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tabpfn_infer_seconds%2C%20f%22%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%20%7Btrain_seconds%3A.0f%7Ds%20(1%20%E5%9B%9E)%22%5D)%0A%20%20%20%20_rows.append(%5B%22%E5%85%AC%E5%BC%8F%20TabPFN%202.2.1%20(ctx%3D1024)%22%2C%20official_rmse%2C%20official_mae%2C%20official_r2%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20official_fit_s%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22predict%20%7Bofficial_predict_s%3A.2f%7Ds%20%2F%20fit%20%E3%81%AF%E5%88%9D%E5%9B%9E%E3%83%AD%E3%83%BC%E3%83%89%E8%BE%BC%E3%81%BF%22%5D)%0A%20%20%20%20_r%20%3D%20_fit_eval(lgb.LGBMRegressor(n_estimators%3D300%2C%20verbose%3D-1)%2C%20X_ctx%2C%20y_ctx)%0A%20%20%20%20_rows.append(%5B%22LightGBM%20(ctx%3D1024)%22%2C%20*_r%2C%20%22context%20%E3%81%AE%E3%81%BF%E3%81%A7%E5%AD%A6%E7%BF%92%22%5D)%0A%20%20%20%20_r%20%3D%20_fit_eval(lgb.LGBMRegressor(n_estimators%3D300%2C%20verbose%3D-1)%2C%20X_pool%2C%20y_pool)%0A%20%20%20%20_rows.append(%5B%22LightGBM%20(full%20~52k%2C%20%E4%B8%8A%E9%99%90)%22%2C%20*_r%2C%20%22%E5%85%A8%20train%20%E3%81%A7%E5%AD%A6%E7%BF%92(%E4%B8%8D%E5%85%AC%E5%B9%B3)%22%5D)%0A%20%20%20%20_r%20%3D%20_fit_eval(RandomForestRegressor(n_estimators%3D200%2C%20n_jobs%3D-1%2C%20random_state%3D0)%2C%20X_ctx%2C%20y_ctx)%0A%20%20%20%20_rows.append(%5B%22RandomForest%20(ctx%3D1024)%22%2C%20*_r%2C%20%22context%20%E3%81%AE%E3%81%BF%E3%81%A7%E5%AD%A6%E7%BF%92%22%5D)%0A%20%20%20%20_r%20%3D%20_fit_eval(Ridge(alpha%3D1.0)%2C%20X_ctx%2C%20y_ctx)%0A%20%20%20%20_rows.append(%5B%22Ridge%20(ctx%3D1024)%22%2C%20*_r%2C%20%22%E7%B7%9A%E5%BD%A2%E3%83%99%E3%83%BC%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%B3%22%5D)%0A%20%20%20%20_mean_pred%20%3D%20np.full_like(y_test_eval%2C%20y_ctx.mean())%0A%20%20%20%20_rows.append(%5B%0A%20%20%20%20%20%20%20%20%22%E5%B9%B3%E5%9D%87%E4%BA%88%E6%B8%AC%20(baseline)%22%2C%0A%20%20%20%20%20%20%20%20float(np.sqrt(mean_squared_error(y_test_eval%2C%20_mean_pred)))%2C%0A%20%20%20%20%20%20%20%20float(mean_absolute_error(y_test_eval%2C%20_mean_pred))%2C%0A%20%20%20%20%20%20%20%20float(r2_score(y_test_eval%2C%20_mean_pred))%2C%0A%20%20%20%20%20%20%20%200.0%2C%20%22%E5%AE%9A%E6%95%B0%E4%BA%88%E6%B8%AC%22%2C%0A%20%20%20%20%5D)%0A%20%20%20%20comparison_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20_rows%2C%20columns%3D%5B%22model%22%2C%20%22RMSE%22%2C%20%22MAE%22%2C%20%22R2%22%2C%20%22fit_seconds%22%2C%20%22%E5%82%99%E8%80%83%22%5D%0A%20%20%20%20).round(%7B%22RMSE%22%3A%201%2C%20%22MAE%22%3A%201%2C%20%22R2%22%3A%203%2C%20%22fit_seconds%22%3A%203%7D)%0A%20%20%20%20comparison_df%0A%20%20%20%20return%20(comparison_df%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E5%85%AC%E5%BC%8F%20TabPFN%20%E3%81%A8%20scratch%20%E5%AE%9F%E8%A3%85%E3%81%AE%E5%B7%AE%E3%82%92%E8%80%83%E5%AF%9F%E3%81%99%E3%82%8B%0A%0A%20%20%20%20%E5%AE%9F%E6%B8%AC%E3%81%A7%E3%81%AF%E3%80%81%E5%85%AC%E5%BC%8F%20TabPFN%20%E3%81%AF%20**1024%20%E8%A1%8C%E3%82%92%E8%A6%8B%E3%81%9B%E3%81%A6%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%99%E3%82%8B%E3%81%A0%E3%81%91**%E3%81%A7%E3%80%81context%20%E9%99%90%E5%AE%9A%E3%81%AE%E3%81%A9%E3%81%AE%E6%89%8B%E6%B3%95%0A%20%20%20%20%EF%BC%88LightGBM%E3%83%BBRandomForest%E3%83%BBRidge%EF%BC%89%E3%82%88%E3%82%8A%E3%82%82%E4%BD%8E%E3%81%84%20RMSE%20%E3%82%92%E5%87%BA%E3%81%97%E3%80%81%E5%85%A8%E5%AD%A6%E7%BF%92%E3%83%87%E3%83%BC%E3%82%BF%EF%BC%88%E7%B4%84%2052k%20%E8%A1%8C%EF%BC%89%E3%81%A7%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%0A%20%20%20%20LightGBM%20%E3%81%AB%E8%82%89%E8%96%84%E3%81%97%E3%81%9F%EF%BC%88%E6%9C%AC%20split%20%E3%81%A7%E3%81%AF%E5%85%AC%E5%BC%8F%20583%20%E3%81%AB%E5%AF%BE%E3%81%97%E5%85%A8%E3%83%87%E3%83%BC%E3%82%BF%20LightGBM%20522%EF%BC%89%E3%80%82%E3%81%99%E3%81%AA%E3%82%8F%E3%81%A1%E3%80%8C%E5%B0%91%E9%87%8F%E3%81%AE%20context%20%E3%82%92%0A%20%20%20%20%E6%9D%A1%E4%BB%B6%E3%81%AB%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%99%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%E3%80%81%E5%A4%A7%E9%87%8F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A7%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%20GBDT%20%E3%81%AB%E8%BF%AB%E3%82%8B%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%20PFN%20%E3%81%AE%E4%B8%BB%E5%BC%B5%E3%82%92%E8%A3%8F%E3%81%A5%E3%81%91%E3%82%8B%E3%80%82%E5%90%8C%E6%99%82%E3%81%AB%E3%80%81%0A%20%20%20%20%E5%85%AC%E5%BC%8F%E3%81%A8%E8%87%AA%E5%89%8D%E5%AE%9F%E8%A3%85%E3%81%AE%E5%B7%AE%EF%BC%88583%20%E5%AF%BE%201182%EF%BC%89%E3%81%AF%E3%80%81%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BE**%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%81%A8%20prior%20%E3%81%AE%E8%B3%AA**%E3%81%AE%E5%B7%AE%E3%82%92%E6%98%A0%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%20%20%20%20%E5%B7%AE%E3%81%AE%E8%A6%81%E5%9B%A0%E3%82%92%E6%95%B4%E7%90%86%E3%81%99%E3%82%8B%E3%81%A8%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82%0A%0A%20%20%20%20-%20**%E3%83%A2%E3%83%87%E3%83%AB%E8%A6%8F%E6%A8%A1**%EF%BC%9A%E5%85%AC%E5%BC%8F%E3%81%AF%E6%9C%AC%E5%AE%9F%E8%A3%85%EF%BC%88%E7%B4%84%2036%20%E4%B8%87%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%EF%BC%89%E3%82%88%E3%82%8A%E3%81%AF%E3%82%8B%E3%81%8B%E3%81%AB%E5%A4%A7%E3%81%8D%E3%81%84%20Transformer%20%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%0A%20%20%20%20-%20**%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%83%87%E3%83%BC%E3%82%BF%E6%95%B0%E3%81%A8%E8%A8%88%E7%AE%97%E9%87%8F**%EF%BC%9A%E5%85%AC%E5%BC%8F%E3%81%AF%E8%86%A8%E5%A4%A7%E3%81%AA%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E9%95%B7%E6%99%82%E9%96%93%E5%AD%A6%E7%BF%92%E3%81%99%E3%82%8B%E3%80%82%E6%9C%AC%E5%AE%9F%E8%A3%85%E3%81%AF%E6%95%B0%E5%88%86%E3%83%BB%0A%20%20%20%20%20%202000%20%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%AB%E7%B5%9E%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%0A%20%20%20%20-%20**prior%20%E3%81%AE%E4%BD%9C%E3%82%8A%E8%BE%BC%E3%81%BF**%EF%BC%9A%E5%85%AC%E5%BC%8F%E3%81%AE%20prior%20%E3%81%AF%E6%A7%8B%E9%80%A0%E7%9A%84%E5%9B%A0%E6%9E%9C%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E7%B2%BE%E7%B7%BB%E3%81%AB%E8%A8%AD%E8%A8%88%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%E6%9C%AC%E5%AE%9F%E8%A3%85%E3%81%AE%20prior%20%E3%81%AF%0A%20%20%20%20%20%20%E5%B0%8F%E3%81%95%E3%81%AA%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%20MLP%20%E3%81%A7%E3%80%81%E5%AE%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%A7%8B%E9%80%A0%E3%81%A8%E3%81%AE%E9%9A%94%E3%81%9F%E3%82%8A%E3%81%8C%E5%A4%A7%E3%81%8D%E3%81%84%E3%80%82%0A%20%20%20%20-%20**%E5%88%86%E5%B8%83%E3%83%98%E3%83%83%E3%83%89%E3%81%AE%E8%A7%A3%E5%83%8F%E5%BA%A6%EF%BC%88%E3%83%93%E3%83%B3%E6%95%B0%EF%BC%89**%EF%BC%9A%E5%85%AC%E5%BC%8F%E3%81%AF%E5%9B%9E%E5%B8%B0%E3%81%AB%E6%95%B0%E5%8D%83%E8%A6%8F%E6%A8%A1%E3%81%AE%E3%83%93%E3%83%B3%EF%BC%88Riemann%2Fbar%20distribution%EF%BC%89%E3%82%92%E4%BD%BF%E3%81%86%E3%80%82%0A%20%20%20%20%20%20%E6%9C%AC%E5%AE%9F%E8%A3%85%E3%81%AE%20%24K%3D16%24%20%E3%81%AB%E5%AF%BE%E3%81%97%E3%80%81%E5%85%AC%E5%BC%8F%E3%81%AE%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AF%E5%AE%9F%E8%B3%AA%E7%84%A1%E8%A6%96%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%E8%87%AA%E5%89%8D%E3%81%A7%E6%B8%AC%E3%81%A3%E3%81%9F%20%24K%3D16%24%20%E3%81%AE%E9%9B%A2%E6%95%A3%E5%8C%96%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AF%0A%20%20%20%20%20%20%E7%B4%84%20591%20%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E5%85%AC%E5%BC%8F%E3%81%AE%20RMSE%20%E3%81%AF%E3%81%93%E3%82%8C%E3%82%88%E3%82%8A%E5%8D%81%E5%88%86%E4%BD%8E%E3%81%84%E3%80%82%E3%81%99%E3%81%AA%E3%82%8F%E3%81%A1%E5%85%AC%E5%BC%8F%E3%81%AF%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AB%E7%B8%9B%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%80%82%0A%20%20%20%20-%20**%E5%89%8D%E5%87%A6%E7%90%86**%EF%BC%9A%E5%85%AC%E5%BC%8F%E3%81%AF%E7%89%B9%E5%BE%B4%E9%87%8F%E3%81%AE%E6%AD%A3%E8%A6%8F%E5%8C%96%E3%83%BB%E5%A4%96%E3%82%8C%E5%80%A4%E5%87%A6%E7%90%86%E3%83%BB%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E5%87%A6%E7%90%86%E3%81%AA%E3%81%A9%E3%82%92%E5%AE%9F%E3%83%87%E3%83%BC%E3%82%BF%E5%90%91%E3%81%91%E3%81%AB%E4%BD%9C%E3%82%8A%E8%BE%BC%E3%82%93%E3%81%A7%E3%81%84%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E7%B5%90%E8%AB%96%E3%81%A8%E3%81%97%E3%81%A6%E3%80%81**scratch%20%E5%AE%9F%E8%A3%85%E3%81%AF%E5%8E%9F%E7%90%86%EF%BC%882%20%E7%A8%AE%E3%81%AE%E6%B3%A8%E6%84%8F%E3%83%BBin-context%20%E5%AD%A6%E7%BF%92%E3%83%BBprior%20%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%83%BB%E5%88%86%E5%B8%83%E3%83%98%E3%83%83%E3%83%89%EF%BC%89%E3%82%92%0A%20%20%20%20%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%82%82%E3%81%AE%E3%80%81%E5%85%AC%E5%BC%8F%E3%81%AF%E5%AE%9F%E7%94%A8**%E3%81%A8%E3%81%84%E3%81%86%E6%95%B4%E7%90%86%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AE%E8%AD%B0%E8%AB%96%E3%81%A8%20context%20%E6%9B%B2%E7%B7%9A%E3%81%AE%E9%87%8D%E3%81%AD%E6%8F%8F%E3%81%8D%E3%81%8B%E3%82%89%E3%80%81%0A%20%20%20%20%E5%85%AC%E5%BC%8F%E3%81%8C%E3%80%8C%E3%83%95%E3%83%AD%E3%82%A2%E3%81%AB%E7%B8%9B%E3%82%89%E3%82%8C%E3%81%9A%E3%80%81%E5%B0%91%E3%81%AA%E3%81%84%20context%20%E3%81%A7%E9%AB%98%E7%B2%BE%E5%BA%A6%E3%80%8D%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E6%95%B0%E5%80%A4%E3%81%A7%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A8%E9%99%90%E7%95%8C%0A%0A%20%20%20%20%E6%B8%AC%E5%AE%9A%E7%B5%90%E6%9E%9C%E3%82%92%E4%B8%8B%E3%81%AB%E3%81%BE%E3%81%A8%E3%82%81%E3%82%8B%E3%80%82PFN%20%E3%81%AE%E7%AB%8B%E3%81%A1%E4%BD%8D%E7%BD%AE%E3%82%92%E6%95%B4%E7%90%86%E3%81%99%E3%82%8B%E3%81%A8%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82%0A%0A%20%20%20%20%E4%BB%8A%E5%9B%9E%E3%81%AE%E6%94%B9%E5%96%84%E3%81%A7%E3%81%AF%E3%80%81%E5%9B%9E%E5%B8%B0%20RMSE%20%E3%82%92%E5%BE%8B%E9%80%9F%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F**%E9%9B%A2%E6%95%A3%E5%8C%96%E3%83%95%E3%83%AD%E3%82%A2**%E3%81%AB%E7%9D%80%E7%9B%AE%E3%81%97%E3%80%81%E5%88%86%E4%BD%8D%E3%83%93%E3%83%B3%E6%95%B0%E3%82%92%20%24K%3D10%24%20%E3%81%8B%E3%82%89%20%24K%3D16%24%20%E3%81%B8%0A%20%20%20%20%E5%A2%97%E3%82%84%E3%81%97%E3%81%A6%E4%B8%8B%E9%99%90%E3%82%92%E4%B8%8B%E3%81%92%E3%80%81%E3%81%95%E3%82%89%E3%81%AB%20prior%20%E3%81%AE%E5%88%86%E5%89%B2%E4%BD%8D%E7%BD%AE%E3%82%92%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E5%8C%96%E3%81%97%E3%81%A6%20context%20%E9%95%B7%E3%81%AE%E5%A4%96%E6%8C%BF%E3%82%92%E7%B7%A9%E5%92%8C%E3%81%97%E3%81%9F%E3%80%82%E3%81%9D%E3%81%AE%E7%B5%90%E6%9E%9C%E3%80%81%0A%20%20%20%20scratch%20TabPFN%20%E3%81%AF%E7%B7%9A%E5%BD%A2%E3%81%AE%20Ridge%20%E3%82%92%E6%98%8E%E7%A2%BA%E3%81%AB%E4%B8%8A%E5%9B%9E%E3%81%A3%E3%81%9F%EF%BC%88%E6%AF%94%E8%BC%83%E8%A1%A8%E3%81%A7%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%82%8B%EF%BC%89%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%20context%20%E9%99%90%E5%AE%9A%E3%81%AE%0A%20%20%20%20LightGBM%2FRandomForest%20%E3%81%AB%E3%81%AF%E5%8F%8A%E3%81%B0%E3%81%AA%E3%81%84%E3%80%82%0A%0A%20%20%20%20%E5%85%AC%E5%BC%8F%20TabPFN%202.2.1%20%E3%82%92%E5%90%8C%E3%81%98%E6%9D%A1%E4%BB%B6%E3%81%A7%E8%B5%B0%E3%82%89%E3%81%9B%E3%82%8B%E3%81%A8%E3%80%811024%20%E8%A1%8C%E3%81%AE%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%A0%E3%81%91%E3%81%A7%20context%20%E9%99%90%E5%AE%9A%E3%81%AE%E3%83%99%E3%83%BC%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%92%0A%20%20%20%20%E3%81%99%E3%81%B9%E3%81%A6%E4%B8%8A%E5%9B%9E%E3%82%8A%E3%80%81%E5%85%A8%E3%83%87%E3%83%BC%E3%82%BF%E5%AD%A6%E7%BF%92%E3%81%AE%20LightGBM%20%E3%81%AB%E8%82%89%E8%96%84%E3%81%97%E3%81%9F%E3%80%82scratch%20%E3%81%A8%E3%81%AE%E5%B7%AE%EF%BC%9D%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%81%A8%20prior%20%E3%81%AE%E8%B3%AA%E3%81%AE%E5%B7%AE%E3%81%8C%0A%20%20%20%20%E6%95%B0%E5%80%A4%E3%81%A7%E6%98%8E%E7%A2%BA%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%80%82%0A%0A%20%20%20%20**PFN%20%E3%81%8C%E5%8B%9D%E3%81%A4%E5%A0%B4%E9%9D%A2**%EF%BC%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E9%9D%9E%E5%B8%B8%E3%81%AB%E5%B0%91%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D%E3%80%81%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E8%AA%BF%E6%95%B4%E3%81%8C%E4%B8%8D%E8%A6%81%E3%81%AA%E3%81%93%E3%81%A8%E3%80%81%0A%20%20%20%20%E3%80%8C%E5%AD%A6%E7%BF%92%E3%80%8D%E3%81%8C%E7%9E%AC%E6%99%82%EF%BC%88%E9%A0%86%E4%BC%9D%E6%92%AD%E3%81%AE%E3%81%BF%EF%BC%89%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6**%E8%BC%83%E6%AD%A3%E3%81%95%E3%82%8C%E3%81%9F%E4%BA%88%E6%B8%AC%E5%88%86%E5%B8%83**%E3%81%8C%E5%BE%97%E3%82%89%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%80%82%0A%0A%20%20%20%20**PFN%20%E3%81%8C%E8%B2%A0%E3%81%91%E3%82%8B%E5%A0%B4%E9%9D%A2**%EF%BC%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E5%A4%A7%E3%81%8D%E3%81%84%E3%81%A8%E3%81%8D%EF%BC%88%E6%96%87%E8%84%88%E9%95%B7%E3%81%AE%E4%B8%8A%E9%99%90%E3%81%A7%E5%85%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%EF%BC%89%E3%80%81%E7%89%B9%E5%BE%B4%E6%95%B0%E3%81%8C%E5%A4%9A%E3%81%84%E3%81%A8%E3%81%8D%E3%80%81%0A%20%20%20%20%E3%81%9D%E3%81%97%E3%81%A6%E6%B3%A8%E6%84%8F%E3%81%8C%20%24O(n%5E2)%24%20%E3%81%AE%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%BB%E8%A8%88%E7%AE%97%E9%87%8F%E3%82%92%E8%A6%81%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%80%82%E5%AE%9F%E9%9A%9B%E3%80%81%E6%AF%94%E8%BC%83%E8%A1%A8%E3%81%A7%E5%85%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%0A%20%20%20%20LightGBM%20(full)%20%E3%81%AF%20context%20%E9%99%90%E5%AE%9A%E3%81%AE%20scratch%20TabPFN%20%E3%82%92%E4%B8%8A%E5%9B%9E%E3%82%8B%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E5%85%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%AE%E5%B8%B0%E7%B5%90%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%0A%20%20%20%20context%20%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%A8%20RMSE%20%E3%81%8C%E4%B8%8B%E3%81%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%80%8C%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E9%95%B7%E3%81%AE%E5%BD%B1%E9%9F%BF%E3%80%8D%E3%81%AE%E5%9B%B3%E3%81%A7%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%80%82%0A%20%20%20%20scratch%20%E3%81%8C%20LightGBM%20(ctx%3D1024)%20%E3%81%AB%E5%B1%8A%E3%81%8B%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%80%81%E5%AE%9F%E6%B8%AC%20RMSE%20%E3%81%8C%E9%9B%A2%E6%95%A3%E5%8C%96%E3%83%95%E3%83%AD%E3%82%A2%E3%82%88%E3%82%8A%E4%B8%8A%E3%81%AB%E7%95%99%E3%81%BE%E3%82%8B%E3%80%81%E3%81%99%E3%81%AA%E3%82%8F%E3%81%A1%0A%20%20%20%20%E6%9C%AC%E5%AE%9F%E8%A3%85%E3%81%AE%E8%A6%8F%E6%A8%A1%E3%83%BB%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E9%87%8F%E3%81%A7%E3%81%AF%E3%83%93%E3%83%B3%E4%BA%88%E6%B8%AC%E3%81%8C%E5%AE%8C%E5%85%A8%E3%81%A7%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%8C%E4%B8%BB%E5%9B%A0%E3%81%A7%E3%81%82%E3%82%8B%EF%BC%88%E6%95%B0%E5%80%A4%E3%81%AF%E8%A3%85%E9%A3%BE%E3%81%9B%E3%81%9A%E6%AD%A3%E7%9B%B4%E3%81%AB%E8%A8%98%E3%81%99%EF%BC%89%E3%80%82%0A%0A%20%20%20%20%E3%81%AA%E3%81%8A%E6%9C%AC%20notebook%20%E3%81%AE%20scratch%20%E5%AE%9F%E8%A3%85%E3%81%AF%E3%80%81prior%20%E7%94%9F%E6%88%90%E3%83%BB%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%83%BB%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%82%92%E3%81%99%E3%81%B9%E3%81%A6%E8%87%AA%E5%89%8D%E3%81%A7%E8%A1%8C%E3%81%A3%E3%81%9F%0A%20%20%20%20%E6%95%99%E8%82%B2%E7%9B%AE%E7%9A%84%E3%81%AE%E6%9C%80%E5%B0%8F%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82%E5%85%AC%E5%BC%8F%20TabPFN%20v2%20%E3%81%AF%E6%A1%81%E9%81%95%E3%81%84%E3%81%AB%E5%A4%A7%E8%A6%8F%E6%A8%A1%E3%81%AA%20prior%20%E3%81%A8%E9%95%B7%E3%81%84%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%0A%20%20%20%20%E3%81%93%E3%81%93%E3%82%88%E3%82%8A%E3%81%AF%E3%82%8B%E3%81%8B%E3%81%AB%E9%AB%98%E3%81%84%E7%B2%BE%E5%BA%A6%E3%82%92%E5%87%BA%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20comparison_df%2C%0A%20%20%20%20context_rmse_df%2C%0A%20%20%20%20floor_df%2C%0A%20%20%20%20official_rmse%2C%0A%20%20%20%20synthetic_bin_acc%2C%0A%20%20%20%20tabpfn_cls_acc%2C%0A%20%20%20%20tabpfn_cls_f1%2C%0A%20%20%20%20tabpfn_r2%2C%0A%20%20%20%20tabpfn_rmse%2C%0A%20%20%20%20toy_bin_acc%2C%0A%20%20%20%20train_seconds%2C%0A)%3A%0A%20%20%20%20_floor16%20%3D%20float(floor_df.loc%5Bfloor_df%5B%22K%22%5D%20%3D%3D%2016%2C%20%22oracle_floor_RMSE%22%5D.iloc%5B0%5D)%0A%20%20%20%20summary_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%E6%8C%87%E6%A8%99%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%E4%BA%8B%E5%89%8D%E5%AD%A6%E7%BF%92%E3%81%AE%E5%A3%81%E6%99%82%E8%A8%88%E6%99%82%E9%96%93%20%5Bs%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%E6%96%B0%E8%A6%8F%E4%BA%BA%E5%B7%A5%E3%83%87%E3%83%BC%E3%82%BF%20%E3%83%93%E3%83%B3%E6%AD%A3%E8%A7%A3%E7%8E%87%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22sklearn%20toy%20%E3%83%93%E3%83%B3%E6%AD%A3%E8%A7%A3%E7%8E%87%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22scratch%20%E5%9B%9E%E5%B8%B0%20RMSE%20(ctx%3D1024)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22scratch%20%E5%9B%9E%E5%B8%B0%20R2%20(ctx%3D1024)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%E5%85%AC%E5%BC%8F%20TabPFN%20%E5%9B%9E%E5%B8%B0%20RMSE%20(ctx%3D1024)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22K%3D16%20%E9%9B%A2%E6%95%A3%E5%8C%96%E3%83%95%E3%83%AD%E3%82%A2%20(RMSE%20%E4%B8%8B%E9%99%90)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22diamonds%20%E5%88%86%E4%BD%8D%E5%88%86%E9%A1%9E%20accuracy%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22diamonds%20%E5%88%86%E4%BD%8D%E5%88%86%E9%A1%9E%20macro-F1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22scratch%20RMSE%20(context%3D64%20-%3E%201024)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%E5%80%A4%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Btrain_seconds%3A.1f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Bsynthetic_bin_acc%3A.3f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Btoy_bin_acc%3A.3f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Btabpfn_rmse%3A.1f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Btabpfn_r2%3A.3f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Bofficial_rmse%3A.1f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7B_floor16%3A.0f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Btabpfn_cls_acc%3A.3f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Btabpfn_cls_f1%3A.3f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%7Bcontext_rmse_df%5B'scratch_RMSE'%5D.iloc%5B0%5D%3A.0f%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%20-%3E%20%7Bcontext_rmse_df%5B'scratch_RMSE'%5D.iloc%5B-1%5D%3A.0f%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20print(%22%3D%3D%3D%20comparison%20(%E5%9B%9E%E5%B8%B0)%20%3D%3D%3D%22)%0A%20%20%20%20print(comparison_df.to_string(index%3DFalse))%0A%20%20%20%20summary_df%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
07f307b3384c3aa1b11de59e65b71cab