fin
This commit is contained in:
@@ -1730,6 +1730,63 @@
|
||||
"print(f\" Train S2 → Test S1 Run 6 : {acc_s2_to_s1:.4f} ({acc_s2_to_s1*100:.1f}%) [+{(acc_s2_to_s1 - chance)*100:.1f} pp above chance]\")\n",
|
||||
"print(f\" Mean transfer accuracy : {(acc_s1_to_s2 + acc_s2_to_s1) / 2:.4f} ({(acc_s1_to_s2 + acc_s2_to_s1) / 2 * 100:.1f}%)\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 54,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"── Cross-Subject CNN Transfer Decoding ─────────────────────────────────\n",
|
||||
" Window: 250 ms (128 samples) | Overlap: 75%\n",
|
||||
" Chance level : 33.3%\n",
|
||||
"\n",
|
||||
" Train S1 → Test S2 Run 6 : 0.4396 (44.0%) [+10.6 pp above chance]\n",
|
||||
" Train S2 → Test S1 Run 6 : 0.4189 (41.9%) [+8.6 pp above chance]\n",
|
||||
" Mean transfer accuracy : 0.4293 (42.9%)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# ── Cross-subject transfer decoding: CNN trained on one subject, tested on the other ──\n",
|
||||
"\n",
|
||||
"WIN_TEST = 250 # ms (best window for Subject 1 in Part B CV)\n",
|
||||
"OVL_TEST = 0.75\n",
|
||||
"\n",
|
||||
"s1_runs = filtered_data[0]\n",
|
||||
"s2_runs = filtered_data[1]\n",
|
||||
"\n",
|
||||
"# ── Build raw training/test sets for each subject ──────────────────────────────\n",
|
||||
"run_raw1 = [extract_run_Xy(r, WIN_TEST, OVL_TEST, raw=True) for r in s1_runs[:5]]\n",
|
||||
"X_train1_raw = np.vstack([xy[0] for xy in run_raw1])\n",
|
||||
"y_train1_raw = np.concatenate([xy[1] for xy in run_raw1])\n",
|
||||
"\n",
|
||||
"run_raw2 = [extract_run_Xy(r, WIN_TEST, OVL_TEST, raw=True) for r in s2_runs[:5]]\n",
|
||||
"X_train2_raw = np.vstack([xy[0] for xy in run_raw2])\n",
|
||||
"y_train2_raw = np.concatenate([xy[1] for xy in run_raw2])\n",
|
||||
"\n",
|
||||
"X_test1_raw, y_test1_raw = extract_run_Xy(s1_runs[5], WIN_TEST, OVL_TEST, raw=True)\n",
|
||||
"X_test2_raw, y_test2_raw = extract_run_Xy(s2_runs[5], WIN_TEST, OVL_TEST, raw=True)\n",
|
||||
"\n",
|
||||
"# ── Train S1 → Test S2 ────────────────────────────────────────────────────────\n",
|
||||
"acc_s1_to_s2 = train_cnn_raw(X_train1_raw, y_train1_raw, X_test2_raw, y_test2_raw)\n",
|
||||
"\n",
|
||||
"# ── Train S2 → Test S1 ────────────────────────────────────────────────────────\n",
|
||||
"acc_s2_to_s1 = train_cnn_raw(X_train2_raw, y_train2_raw, X_test1_raw, y_test1_raw)\n",
|
||||
"\n",
|
||||
"chance = 1 / 3\n",
|
||||
"\n",
|
||||
"print(\"── Cross-Subject CNN Transfer Decoding ─────────────────────────────────\")\n",
|
||||
"print(f\" Window: {WIN_TEST} ms ({ms_to_samples(WIN_TEST)} samples) | Overlap: {OVL_TEST:.0%}\")\n",
|
||||
"print(f\" Chance level : {chance:.1%}\")\n",
|
||||
"print()\n",
|
||||
"print(f\" Train S1 → Test S2 Run 6 : {acc_s1_to_s2:.4f} ({acc_s1_to_s2*100:.1f}%) [+{(acc_s1_to_s2 - chance)*100:.1f} pp above chance]\")\n",
|
||||
"print(f\" Train S2 → Test S1 Run 6 : {acc_s2_to_s1:.4f} ({acc_s2_to_s1*100:.1f}%) [+{(acc_s2_to_s1 - chance)*100:.1f} pp above chance]\")\n",
|
||||
"print(f\" Mean transfer accuracy : {(acc_s1_to_s2 + acc_s2_to_s1) / 2:.4f} ({(acc_s1_to_s2 + acc_s2_to_s1) / 2 * 100:.1f}%)\")"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
Reference in New Issue
Block a user