This commit is contained in:
pulipakaa24
2026-03-06 00:20:26 -06:00
parent 24019c18c0
commit f7de4421dd

View File

@@ -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\" 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}%)\")" "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": { "metadata": {