|
@@ -0,0 +1,437 @@
|
|
|
+{
|
|
|
+ "cells": [
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 1,
|
|
|
+ "id": "28ab8ba6",
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "import sys, os\n",
|
|
|
+ "sys.path.append(os.path.join(os.getcwd(), '..'))\n",
|
|
|
+ "sys.path.append(os.path.join(os.getcwd(), '..', '..'))\n",
|
|
|
+ "sys.path.append(os.path.join(os.getcwd(), '..', '..', '..', 'pplSIT', 'workflow', 'utils'))"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 2,
|
|
|
+ "id": "5869aeac",
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "%matplotlib inline\n",
|
|
|
+ "\n",
|
|
|
+ "import pandas as pd\n",
|
|
|
+ "from session.sessions import selected_009266, selected_008229, selected_009265\n",
|
|
|
+ "from imports import *\n",
|
|
|
+ "from scipy import stats\n",
|
|
|
+ "from scipy import signal\n",
|
|
|
+ "from sklearn.manifold import TSNE\n",
|
|
|
+ "from sklearn import decomposition\n",
|
|
|
+ "from sklearn.model_selection import train_test_split\n",
|
|
|
+ "from sklearn.linear_model import LogisticRegression\n",
|
|
|
+ "from sklearn.metrics import classification_report, confusion_matrix\n",
|
|
|
+ "from statsmodels.formula.api import ols, glm\n",
|
|
|
+ "from regression import get_GLM_and_prediction\n",
|
|
|
+ "\n",
|
|
|
+ "from Behavior.behavior import get_extent, get_idxs_behav_state\n",
|
|
|
+ "from population import unit_response_matrix, activity_at_phase"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 3,
|
|
|
+ "id": "90eed9ee",
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "application/javascript": [
|
|
|
+ "IPython.OutputArea.prototype._should_scroll = function(lines) {\n",
|
|
|
+ " return false;\n",
|
|
|
+ "}\n"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ "<IPython.core.display.Javascript object>"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "display_data"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "%%javascript\n",
|
|
|
+ "IPython.OutputArea.prototype._should_scroll = function(lines) {\n",
|
|
|
+ " return false;\n",
|
|
|
+ "}"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 15,
|
|
|
+ "id": "0e120760",
|
|
|
+ "metadata": {
|
|
|
+ "scrolled": true
|
|
|
+ },
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/plain": [
|
|
|
+ "['009266_hippoSIT_2023-04-17_17-04-17',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-18_10-10-37',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-18_17-03-10',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-19_10-33-51',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-20_08-57-39',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-21_08-43-00',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-21_13-12-31',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-24_10-08-11',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-24_16-56-55',\n",
|
|
|
+ " '009266_hippoSIT_2023-04-26_08-20-17',\n",
|
|
|
+ " '009266_hippoSIT_2023-05-02_12-22-14',\n",
|
|
|
+ " '009266_hippoSIT_2023-05-04_19-47-15',\n",
|
|
|
+ " '009266_hippoSIT_2023-05-22_09-27-22',\n",
|
|
|
+ " '009266_hippoSIT_2023-05-23_09-18-05',\n",
|
|
|
+ " '009266_hippoSIT_2023-05-25_15-55-57',\n",
|
|
|
+ " '009266_hippoSIT_2023-06-14_08-21-23',\n",
|
|
|
+ " '009266_hippoSIT_2023-06-19_08-58-35']"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 15,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "source = '/home/sobolev/nevermind_ag-grothe/AG_Pecka/data/processed/'\n",
|
|
|
+ "source = '/home/sobolev/nevermind/AG_Pecka/data/processed/'\n",
|
|
|
+ "\n",
|
|
|
+ "sessions = [s for s in selected_009266.keys()]\n",
|
|
|
+ "#sessions = [s for s in selected_009265.keys()]\n",
|
|
|
+ "#sessions = [s for s in selected_008229.keys()]\n",
|
|
|
+ "sessions.sort()\n",
|
|
|
+ "\n",
|
|
|
+ "selected = sessions[:]\n",
|
|
|
+ "try:\n",
|
|
|
+ " selected.remove('009266_hippoSIT_2023-04-20_15-24-14')\n",
|
|
|
+ "except:\n",
|
|
|
+ " pass\n",
|
|
|
+ "try:\n",
|
|
|
+ " selected.remove('009265_hippoSIT_2023-02-27_10-18-32')\n",
|
|
|
+ " selected.remove('009265_hippoSIT_2023-02-27_15-33-46')\n",
|
|
|
+ "except:\n",
|
|
|
+ " pass\n",
|
|
|
+ "selected"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 39,
|
|
|
+ "id": "442f3fdb",
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "name": "stdout",
|
|
|
+ "output_type": "stream",
|
|
|
+ "text": [
|
|
|
+ "2023-04-17_17 - Scores: (AL: 0.08)\n",
|
|
|
+ "0.74: Speed + W4\n",
|
|
|
+ "0.73: Speed + W4 + RND\n",
|
|
|
+ "0.68: Speed only\n",
|
|
|
+ "0.69: W4 only\n",
|
|
|
+ "0.47: RND\n",
|
|
|
+ "2023-04-18_10 - Scores: (AL: 0.22)\n",
|
|
|
+ "0.77: Speed + W4\n",
|
|
|
+ "0.77: Speed + W4 + RND\n",
|
|
|
+ "0.73: Speed only\n",
|
|
|
+ "0.71: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-04-18_17 - Scores: (AL: 0.24)\n",
|
|
|
+ "0.69: Speed + W4\n",
|
|
|
+ "0.69: Speed + W4 + RND\n",
|
|
|
+ "0.68: Speed only\n",
|
|
|
+ "0.59: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-04-19_10 - Scores: (AL: 0.48)\n",
|
|
|
+ "0.65: Speed + W4\n",
|
|
|
+ "0.63: Speed + W4 + RND\n",
|
|
|
+ "0.62: Speed only\n",
|
|
|
+ "0.60: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-04-20_08 - Scores: (AL: 0.34)\n",
|
|
|
+ "0.72: Speed + W4\n",
|
|
|
+ "0.71: Speed + W4 + RND\n",
|
|
|
+ "0.68: Speed only\n",
|
|
|
+ "0.69: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-04-21_08 - Scores: (AL: 0.41)\n",
|
|
|
+ "0.65: Speed + W4\n",
|
|
|
+ "0.63: Speed + W4 + RND\n",
|
|
|
+ "0.63: Speed only\n",
|
|
|
+ "0.58: W4 only\n",
|
|
|
+ "0.51: RND\n",
|
|
|
+ "2023-04-21_13 - Scores: (AL: 0.47)\n",
|
|
|
+ "0.57: Speed + W4\n",
|
|
|
+ "0.56: Speed + W4 + RND\n",
|
|
|
+ "0.57: Speed only\n",
|
|
|
+ "0.56: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-04-24_10 - Scores: (AL: 0.38)\n",
|
|
|
+ "0.68: Speed + W4\n",
|
|
|
+ "0.70: Speed + W4 + RND\n",
|
|
|
+ "0.66: Speed only\n",
|
|
|
+ "0.65: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-04-24_16 - Scores: (AL: 0.34)\n",
|
|
|
+ "0.64: Speed + W4\n",
|
|
|
+ "0.63: Speed + W4 + RND\n",
|
|
|
+ "0.62: Speed only\n",
|
|
|
+ "0.55: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-04-26_08 - Scores: (AL: 0.30)\n",
|
|
|
+ "0.76: Speed + W4\n",
|
|
|
+ "0.77: Speed + W4 + RND\n",
|
|
|
+ "0.72: Speed only\n",
|
|
|
+ "0.75: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-05-02_12 - Scores: (AL: 0.31)\n",
|
|
|
+ "0.70: Speed + W4\n",
|
|
|
+ "0.71: Speed + W4 + RND\n",
|
|
|
+ "0.67: Speed only\n",
|
|
|
+ "0.62: W4 only\n",
|
|
|
+ "0.51: RND\n",
|
|
|
+ "2023-05-04_19 - Scores: (AL: 0.19)\n",
|
|
|
+ "0.72: Speed + W4\n",
|
|
|
+ "0.77: Speed + W4 + RND\n",
|
|
|
+ "0.74: Speed only\n",
|
|
|
+ "0.70: W4 only\n",
|
|
|
+ "0.50: RND\n",
|
|
|
+ "2023-05-22_09 - Scores: (AL: 0.41)\n",
|
|
|
+ "0.67: Speed + W4\n",
|
|
|
+ "0.67: Speed + W4 + RND\n",
|
|
|
+ "0.67: Speed only\n",
|
|
|
+ "0.60: W4 only\n",
|
|
|
+ "0.50: RND\n",
|
|
|
+ "2023-05-23_09 - Scores: (AL: 0.30)\n",
|
|
|
+ "0.72: Speed + W4\n",
|
|
|
+ "0.69: Speed + W4 + RND\n",
|
|
|
+ "0.68: Speed only\n",
|
|
|
+ "0.69: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-05-25_15 - Scores: (AL: 0.39)\n",
|
|
|
+ "0.68: Speed + W4\n",
|
|
|
+ "0.68: Speed + W4 + RND\n",
|
|
|
+ "0.65: Speed only\n",
|
|
|
+ "0.63: W4 only\n",
|
|
|
+ "0.47: RND\n",
|
|
|
+ "2023-06-14_08 - Scores: (AL: 0.32)\n",
|
|
|
+ "0.70: Speed + W4\n",
|
|
|
+ "0.69: Speed + W4 + RND\n",
|
|
|
+ "0.70: Speed only\n",
|
|
|
+ "0.56: W4 only\n",
|
|
|
+ "0.49: RND\n",
|
|
|
+ "2023-06-19_08 - Scores: (AL: 0.29)\n",
|
|
|
+ "0.68: Speed + W4\n",
|
|
|
+ "0.66: Speed + W4 + RND\n",
|
|
|
+ "0.65: Speed only\n",
|
|
|
+ "0.62: W4 only\n",
|
|
|
+ "0.49: RND\n"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "#session = selected[0]\n",
|
|
|
+ "\n",
|
|
|
+ "conf_mxs = {}\n",
|
|
|
+ "scores = {}\n",
|
|
|
+ "for session in selected[:]:\n",
|
|
|
+ " ft = 'tSNE'\n",
|
|
|
+ " fp = 70\n",
|
|
|
+ " animal = session.split('_')[0]\n",
|
|
|
+ " session_path = os.path.join(source, animal, session)\n",
|
|
|
+ " meta_file = os.path.join(source, animal, session, 'meta.h5')\n",
|
|
|
+ " moseq_file = os.path.join(source, animal, session, 'MoSeq.h5')\n",
|
|
|
+ " moseq_class_file = os.path.join(source, animal, session, 'analysis', 'MoSeq_tSNE_UMAP.h5')\n",
|
|
|
+ "\n",
|
|
|
+ " with h5py.File(meta_file, 'r') as f:\n",
|
|
|
+ " tl = np.array(f['processed']['timeline'])\n",
|
|
|
+ " tgt_mx = np.array(f['processed']['target_matrix'])\n",
|
|
|
+ " events = np.array(f['processed']['sound_events'])\n",
|
|
|
+ " with h5py.File(moseq_class_file, 'r') as f:\n",
|
|
|
+ " idxs_srm_tl = np.array(f['idxs_srm_tl'])\n",
|
|
|
+ " fit = np.array(f[ft][str(fp)])\n",
|
|
|
+ " with h5py.File(moseq_file, 'r') as f:\n",
|
|
|
+ " moseq = np.array(f['moseq'])\n",
|
|
|
+ "\n",
|
|
|
+ " # events filter\n",
|
|
|
+ " idxs_filt_ev = np.where(events[:, 1] == 0)[0] # silence filter\n",
|
|
|
+ " idxs_filt_ev = np.where( (events[:, 1] == 0) | (events[:, 1] == 1) )[0] # non-target filter\n",
|
|
|
+ " #idxs_filt_ev = np.arange(len(events)) # no filter\n",
|
|
|
+ "\n",
|
|
|
+ " # 1. Speed\n",
|
|
|
+ " width = 70 # 100 points ~= 1 sec with at 100Hz\n",
|
|
|
+ " kernel = signal.gaussian(width, std=(width) / 7.2)\n",
|
|
|
+ " dx = np.sqrt(np.square(np.diff(moseq[:, 3])) + np.square(np.diff(moseq[:, 4])))\n",
|
|
|
+ " dt = np.diff(moseq[:, 0])\n",
|
|
|
+ " speed = np.concatenate([dx/dt, [dx[-1]/dt[-1]]])\n",
|
|
|
+ " speed_smooth = np.convolve(speed, kernel, 'same') / kernel.sum()\n",
|
|
|
+ " speed_ev = speed_smooth[events[:, 2].astype(np.int32)]\n",
|
|
|
+ " speed_filt_ev = speed_ev[idxs_filt_ev]\n",
|
|
|
+ "\n",
|
|
|
+ " # 2. Population activity \n",
|
|
|
+ " bins, unit_mx = unit_response_matrix(session_path, [1, 2], times_to_event=[])\n",
|
|
|
+ "\n",
|
|
|
+ " # z-score\n",
|
|
|
+ " unit_act_matrix = unit_mx.T\n",
|
|
|
+ " for u, unit_data in enumerate(unit_act_matrix):\n",
|
|
|
+ " unit_act_matrix[u] = stats.zscore(unit_data)\n",
|
|
|
+ " unit_mx = unit_act_matrix.T\n",
|
|
|
+ "\n",
|
|
|
+ " # take first PC from PCA on multiple units\n",
|
|
|
+ " pca = decomposition.PCA(n_components=3)\n",
|
|
|
+ " pca.fit(unit_mx)\n",
|
|
|
+ " X = pca.transform(unit_mx)\n",
|
|
|
+ " pop_act = X[:, 0] # PC1 score\n",
|
|
|
+ "\n",
|
|
|
+ " # filter SILENCE\n",
|
|
|
+ " pop_act_filt = pop_act[idxs_filt_ev]\n",
|
|
|
+ "\n",
|
|
|
+ " # smooth\n",
|
|
|
+ " k_width = 30\n",
|
|
|
+ " kernel = signal.gaussian(k_width, std=(k_width) / 7.2)\n",
|
|
|
+ " pop_act_filt = np.convolve(pop_act_filt, kernel, 'same') / kernel.sum()\n",
|
|
|
+ "\n",
|
|
|
+ " # filter slow oscillations\n",
|
|
|
+ " sos = signal.butter(10, 0.001, fs=4, analog=False, btype='highpass', output='sos')\n",
|
|
|
+ " pop_act_filt = signal.sosfiltfilt(sos, pop_act_filt)\n",
|
|
|
+ "\n",
|
|
|
+ " # just to test - W4 only\n",
|
|
|
+ " w4 = activity_at_phase(session_path, phase=4, do_pca=True)\n",
|
|
|
+ " w4_filt_ev = w4[idxs_filt_ev]\n",
|
|
|
+ "\n",
|
|
|
+ "\n",
|
|
|
+ " # 3. Behavioral state\n",
|
|
|
+ " idxs_tl_tgt_succ = []\n",
|
|
|
+ " for tgt_rec in tgt_mx[tgt_mx[:, 4] == 1]:\n",
|
|
|
+ " idxs_tl_tgt_succ += list(range(tgt_rec[2], tgt_rec[3]))\n",
|
|
|
+ " idxs_tl_tgt_succ = np.array(idxs_tl_tgt_succ)\n",
|
|
|
+ " idxs_AL_tl = get_idxs_behav_state(source, session, idxs_tl_tgt_succ, fit_type='tSNE', fit_parm=70, sigma=0.3, margin=10, bin_count=100)\n",
|
|
|
+ " idxs_AL_ev = np.array([k for k, x in enumerate(events) if x[2] in idxs_AL_tl], dtype=np.int32)\n",
|
|
|
+ "\n",
|
|
|
+ " bs = np.zeros(len(events))\n",
|
|
|
+ " bs[idxs_AL_ev] = 1\n",
|
|
|
+ " bs_filt_ev = bs[idxs_filt_ev]\n",
|
|
|
+ "\n",
|
|
|
+ " # try smth random to show that random staff doesn't affect the score\n",
|
|
|
+ " rnd = np.random.rand(len(bs_filt_ev))\n",
|
|
|
+ "\n",
|
|
|
+ " \n",
|
|
|
+ " # 4. Compute LR and prediction\n",
|
|
|
+ " combs = [\n",
|
|
|
+ " np.column_stack([speed_filt_ev, w4_filt_ev]),\n",
|
|
|
+ " np.column_stack([speed_filt_ev, w4_filt_ev, rnd]),\n",
|
|
|
+ " np.column_stack([speed_filt_ev, rnd]),\n",
|
|
|
+ " np.column_stack([w4_filt_ev, rnd]),\n",
|
|
|
+ " np.column_stack([rnd])\n",
|
|
|
+ " ]\n",
|
|
|
+ " labels = ['Speed + W4', 'Speed + W4 + RND', 'Speed only', 'W4 only', 'RND']\n",
|
|
|
+ "\n",
|
|
|
+ " # 5a. Logistic regression\n",
|
|
|
+ " # try to compensate for bias\n",
|
|
|
+ " bs_high = np.where(bs_filt_ev > 0)[0]\n",
|
|
|
+ " bs_low = np.where(bs_filt_ev == 0)[0]\n",
|
|
|
+ " if len(bs_high) != len(bs_low):\n",
|
|
|
+ " idx_rem = 0 if len(bs_high) < len(bs_low) else 1\n",
|
|
|
+ " idxs_exclude = []\n",
|
|
|
+ " while len(idxs_exclude) < int(np.abs(len(bs_high) - len(bs_low))):\n",
|
|
|
+ " idx = np.random.randint(len(bs_filt_ev))\n",
|
|
|
+ " if bs_filt_ev[idx] == idx_rem and not idx in idxs_exclude:\n",
|
|
|
+ " idxs_exclude.append(idx)\n",
|
|
|
+ " idxs_include = np.array([x for x in range(len(bs_filt_ev)) if x not in idxs_exclude])\n",
|
|
|
+ "\n",
|
|
|
+ " print(\"%s - Scores: (AL: %.2f)\" % (session[-19:-6], (len(idxs_include)/2)/len(bs_filt_ev)))\n",
|
|
|
+ " \n",
|
|
|
+ " for j, lr_data in enumerate(combs):\n",
|
|
|
+ " X_train, X_test, y_train, y_test = train_test_split(lr_data[idxs_include], bs_filt_ev[idxs_include], test_size=0.33)\n",
|
|
|
+ " model = LogisticRegression(solver='liblinear', random_state=0).fit(X_train, y_train)\n",
|
|
|
+ " print(\"%.2f: %s\" % (model.score(X_test, y_test), labels[j]))\n",
|
|
|
+ " #print(confusion_matrix(y_test, model.predict(X_test)))\n",
|
|
|
+ " \n",
|
|
|
+ " if j == 0:\n",
|
|
|
+ " scores[session] = model.score(X_test, y_test)\n",
|
|
|
+ " conf_mxs[session] = confusion_matrix(y_test, model.predict(X_test))\n",
|
|
|
+ " \n",
|
|
|
+ " # 5b. Use SVMs\n",
|
|
|
+ " \n",
|
|
|
+ " # 5c. Use GLMs\n",
|
|
|
+ " #for j, lr_data in enumerate(combs):\n",
|
|
|
+ " # corr, pval, params, pvalues = get_GLM_and_prediction(lr_data, bs_filt_ev)\n",
|
|
|
+ " # print(\"%.2f, %.3f: %s\" % (corr, pval, labels[j]))\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 40,
|
|
|
+ "id": "f55c9daa",
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "name": "stdout",
|
|
|
+ "output_type": "stream",
|
|
|
+ "text": [
|
|
|
+ "2023-06-19_08: score 0.74, FP/FN: 1.84\n",
|
|
|
+ "2023-06-19_08: score 0.77, FP/FN: 1.62\n",
|
|
|
+ "2023-06-19_08: score 0.69, FP/FN: 2.34\n",
|
|
|
+ "2023-06-19_08: score 0.65, FP/FN: 1.48\n",
|
|
|
+ "2023-06-19_08: score 0.72, FP/FN: 1.71\n",
|
|
|
+ "2023-06-19_08: score 0.65, FP/FN: 2.10\n",
|
|
|
+ "2023-06-19_08: score 0.57, FP/FN: 2.49\n",
|
|
|
+ "2023-06-19_08: score 0.68, FP/FN: 1.21\n",
|
|
|
+ "2023-06-19_08: score 0.64, FP/FN: 3.42\n",
|
|
|
+ "2023-06-19_08: score 0.76, FP/FN: 1.28\n",
|
|
|
+ "2023-06-19_08: score 0.70, FP/FN: 1.64\n",
|
|
|
+ "2023-06-19_08: score 0.72, FP/FN: 1.47\n",
|
|
|
+ "2023-06-19_08: score 0.67, FP/FN: 2.15\n",
|
|
|
+ "2023-06-19_08: score 0.72, FP/FN: 1.79\n",
|
|
|
+ "2023-06-19_08: score 0.68, FP/FN: 1.38\n",
|
|
|
+ "2023-06-19_08: score 0.70, FP/FN: 4.27\n",
|
|
|
+ "2023-06-19_08: score 0.68, FP/FN: 1.52\n"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "for k, v in conf_mxs.items():\n",
|
|
|
+ " print(\"%s: score %.2f, FP/FN: %.2f\" % (session[-19:-6], scores[k], v[0][1]/v[1][0]))"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "id": "4be67fb1",
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": []
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "metadata": {
|
|
|
+ "kernelspec": {
|
|
|
+ "display_name": "Python 3 (ipykernel)",
|
|
|
+ "language": "python",
|
|
|
+ "name": "python3"
|
|
|
+ },
|
|
|
+ "language_info": {
|
|
|
+ "codemirror_mode": {
|
|
|
+ "name": "ipython",
|
|
|
+ "version": 3
|
|
|
+ },
|
|
|
+ "file_extension": ".py",
|
|
|
+ "mimetype": "text/x-python",
|
|
|
+ "name": "python",
|
|
|
+ "nbconvert_exporter": "python",
|
|
|
+ "pygments_lexer": "ipython3",
|
|
|
+ "version": "3.8.10"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "nbformat": 4,
|
|
|
+ "nbformat_minor": 5
|
|
|
+}
|