Last active
February 24, 2018 22:39
-
-
Save Radi4/9b1c8f014d9e8f5747dc83c8e6489926 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import mne\n", | |
"import os\n", | |
"from sklearn.model_selection import train_test_split\n", | |
"import h5py\n", | |
"from sklearn.metrics import mean_squared_error" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mean_absolute_percentage_error(y_true, y_pred):\n", | |
" return np.mean(np.mean(np.abs(y_true - y_pred), axis = 0) / np.abs(np.mean(y_true, axis = 0))) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Extracting parameters from ./data/resting_state/pre_egg_petuhova3103.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602749 = 0.000 ... 602.749 secs...\n", | |
"Extracting parameters from ./data/resting_state/2205_miloslavov_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 623249 = 0.000 ... 623.249 secs...\n", | |
"Extracting parameters from ./data/resting_state/kozunova_pre_eeg_2103.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602849 = 0.000 ... 602.849 secs...\n", | |
"Extracting parameters from ./data/resting_state/2505_shirokova_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 606599 = 0.000 ... 606.599 secs...\n", | |
"Extracting parameters from ./data/resting_state/gorbacheva_03021300_rest_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 625249 = 0.000 ... 625.249 secs...\n", | |
"Extracting parameters from ./data/resting_state/200317_ivanova_pre_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602099 = 0.000 ... 602.099 secs...\n", | |
"Extracting parameters from ./data/resting_state/2403_kutuzova_posteeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604199 = 0.000 ... 604.199 secs...\n", | |
"Extracting parameters from ./data/resting_state/3103_petuhova_posteeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 630049 = 0.000 ... 630.049 secs...\n", | |
"Extracting parameters from ./data/resting_state/2103_glebko_posteeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 633899 = 0.000 ... 633.899 secs...\n", | |
"Extracting parameters from ./data/resting_state/glebko_2103_pre_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 643749 = 0.000 ... 643.749 secs...\n", | |
"Extracting parameters from ./data/resting_state/gorin_310117_rest_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 609999 = 0.000 ... 609.999 secs...\n", | |
"Extracting parameters from ./data/resting_state/zavrib_post_eeg_eyesopen15021500.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 321599 = 0.000 ... 321.599 secs...\n", | |
"Extracting parameters from ./data/resting_state/gorbacheva_03_02_2017_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603949 = 0.000 ... 603.949 secs...\n", | |
"Extracting parameters from ./data/resting_state/post_eeg_tsoy_2504.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604949 = 0.000 ... 604.949 secs...\n", | |
"Extracting parameters from ./data/resting_state/2403_kutuzova_pre_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602849 = 0.000 ... 602.849 secs...\n", | |
"Extracting parameters from ./data/resting_state/2505_shirokova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604799 = 0.000 ... 604.799 secs...\n", | |
"Extracting parameters from ./data/resting_state/dagaev_post_rest_eeg_30011600.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603799 = 0.000 ... 603.799 secs...\n", | |
"Extracting parameters from ./data/resting_state/zagirova_pre_eeg_2704.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 607549 = 0.000 ... 607.549 secs...\n", | |
"Extracting parameters from ./data/resting_state/08021400_post_eeg_shuhova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 607199 = 0.000 ... 607.199 secs...\n", | |
"Extracting parameters from ./data/resting_state/2704_zagirova_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604549 = 0.000 ... 604.549 secs...\n", | |
"Extracting parameters from ./data/resting_state/shuhova_08022017_rest_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 637949 = 0.000 ... 637.949 secs...\n", | |
"Extracting parameters from ./data/resting_state/zavrin_open_eyes_eeg_15021500.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 301999 = 0.000 ... 301.999 secs...\n", | |
"Extracting parameters from ./data/resting_state/zavrin_eyes_closed_eeg_15021500.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 302749 = 0.000 ... 302.749 secs...\n", | |
"Extracting parameters from ./data/resting_state/tsoy_pre_eeg_2504.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 652699 = 0.000 ... 652.699 secs...\n", | |
"Extracting parameters from ./data/resting_state/2003_ivanova_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 616599 = 0.000 ... 616.599 secs...\n", | |
"Extracting parameters from ./data/resting_state/bagaeva_post_eeg_13031500.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603899 = 0.000 ... 603.899 secs...\n", | |
"Extracting parameters from ./data/resting_state/gorin_rest_eeg_post_31011200.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603699 = 0.000 ... 603.699 secs...\n", | |
"Extracting parameters from ./data/resting_state/bagaeva_13021500_rest_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603949 = 0.000 ... 603.949 secs...\n", | |
"Extracting parameters from ./data/resting_state/miloslavov_22_05_pre_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603399 = 0.000 ... 603.399 secs...\n", | |
"Extracting parameters from ./data/resting_state/300120171600_dagaev_rest_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 615599 = 0.000 ... 615.599 secs...\n", | |
"Extracting parameters from ./data/resting_state/zavrin_15021500_eyesclosed_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 319299 = 0.000 ... 319.299 secs...\n", | |
"Extracting parameters from ./data/resting_state/2103_kozunova_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603199 = 0.000 ... 603.199 secs...\n" | |
] | |
} | |
], | |
"source": [ | |
"train_eeg_dir = \"./data/resting_state/\"\n", | |
"train_eeg_names = [x for x in os.listdir(train_eeg_dir) \n", | |
" if x[-5:] == \".vhdr\"]\n", | |
"\n", | |
"\n", | |
"data = np.zeros((0, 61))\n", | |
"\n", | |
"for eeg_name in train_eeg_names:\n", | |
" eeg_data = mne.io.read_raw_brainvision(train_eeg_dir + eeg_name, preload=True).get_data().T\n", | |
" data = np.append(data, eeg_data, axis = 0)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(16569900, 61)" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"X_train, X_test, _, _ = train_test_split(data, data, test_size=0.1, random_state = 123)\n", | |
"X_train.shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.decomposition import PCA" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"pca = PCA()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"PCA(copy=True, iterated_power='auto', n_components=None, random_state=None,\n", | |
" svd_solver='auto', tol=0.0, whiten=False)" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pca.fit(X_train)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([8.60501206e-01, 4.50064918e-02, 1.96728939e-02, 1.32136598e-02,\n", | |
" 1.04975082e-02, 8.72080965e-03, 7.62335116e-03, 6.18126786e-03,\n", | |
" 5.67043513e-03, 4.47648307e-03, 3.60945585e-03, 3.14652398e-03,\n", | |
" 2.39228930e-03, 1.80131636e-03, 1.70855324e-03, 1.02205207e-03,\n", | |
" 8.56411536e-04, 7.16579942e-04, 5.79405287e-04, 4.55820757e-04,\n", | |
" 3.82103135e-04, 3.16569681e-04, 2.85133222e-04, 2.29655140e-04,\n", | |
" 2.04059298e-04, 1.75203243e-04, 1.37317351e-04, 1.10815493e-04,\n", | |
" 1.07661772e-04, 6.06199959e-05, 4.45915540e-05, 3.02155660e-05,\n", | |
" 1.35079571e-05, 1.01596334e-05, 8.84664590e-06, 5.20703831e-06,\n", | |
" 4.73173173e-06, 3.48769419e-06, 2.89469779e-06, 2.04873226e-06,\n", | |
" 1.96094774e-06, 1.75111927e-06, 1.46673460e-06, 1.33033908e-06,\n", | |
" 1.07091778e-06, 9.55877007e-07, 7.52438532e-07, 5.92499937e-07,\n", | |
" 5.42740492e-07, 4.09476932e-07, 3.70516426e-07, 3.20656854e-07,\n", | |
" 2.61712216e-07, 1.94464044e-07, 1.73691897e-07, 1.37400176e-07,\n", | |
" 1.18904211e-07, 9.71608336e-08, 7.81569206e-08, 6.95013218e-08,\n", | |
" 6.41651813e-33])" | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pca.explained_variance_ratio_ " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Variance_ratio\n", | |
"\n", | |
"90 % информации - в первых 2 координатах \n", | |
"\n", | |
"95 % информации - в первых 6\n", | |
"\n", | |
"98 % информации - в первых 10\n", | |
"\n", | |
"99% информации - в первых 13" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"eeg_dir = \"./data/new_data/\"\n", | |
"eeg_names = [x for x in os.listdir(eeg_dir) \n", | |
" if x[-5:] == \".vhdr\"]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Extracting parameters from ./data/new_data/0311_pre_eeg_popova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Extracting parameters from ./data/new_data/2509_post_eeg_rinata.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 601549 = 0.000 ... 601.549 secs...\n", | |
"Extracting parameters from ./data/new_data/2510_post_eeg_osipova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602949 = 0.000 ... 602.949 secs...\n", | |
"Extracting parameters from ./data/new_data/0311_post_eeg_mazurova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 603349 = 0.000 ... 603.349 secs...\n", | |
"Extracting parameters from ./data/new_data/3111_post_eeg_popova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 612499 = 0.000 ... 612.499 secs...\n", | |
"Extracting parameters from ./data/new_data/1909_pre_eeg_eliseev.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 608399 = 0.000 ... 608.399 secs...\n", | |
"Extracting parameters from ./data/new_data/14071200_limanskaya_pre_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604549 = 0.000 ... 604.549 secs...\n", | |
"Extracting parameters from ./data/new_data/3010_pre_eeg_suhareva.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 609899 = 0.000 ... 609.899 secs...\n", | |
"Extracting parameters from ./data/new_data/2809_pre_eeg_lukyanov.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 615899 = 0.000 ... 615.899 secs...\n", | |
"Extracting parameters from ./data/new_data/1207_shevchenko_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602849 = 0.000 ... 602.849 secs...\n", | |
"Extracting parameters from ./data/new_data/0708_pre_eeg_krasovskaya.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604049 = 0.000 ... 604.049 secs...\n", | |
"Extracting parameters from ./data/new_data/1207_shevchenko.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2132749 = 0.000 ... 2132.749 secs...\n", | |
"Extracting parameters from ./data/new_data/0311_eeg_mazurova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2048799 = 0.000 ... 2048.799 secs...\n", | |
"Extracting parameters from ./data/new_data/3010_post_eeg_suhareva.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 605799 = 0.000 ... 605.799 secs...\n", | |
"Extracting parameters from ./data/new_data/2809_lukyanov.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2085449 = 0.000 ... 2085.449 secs...\n", | |
"Extracting parameters from ./data/new_data/1608_post_eeg_polshina.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 632899 = 0.000 ... 632.899 secs...\n", | |
"Extracting parameters from ./data/new_data/17_11_pre_eeg_bachurina.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602149 = 0.000 ... 602.149 secs...\n", | |
"Extracting parameters from ./data/new_data/3110_maistrenko.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 1914399 = 0.000 ... 1914.399 secs...\n", | |
"Extracting parameters from ./data/new_data/1509_pre_eeg_zvyagincev.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 606799 = 0.000 ... 606.799 secs...\n", | |
"Extracting parameters from ./data/new_data/2306_patrakeeva_post_eeg_rest.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 605199 = 0.000 ... 605.199 secs...\n", | |
"Extracting parameters from ./data/new_data/3010_eeg_suhareva.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 1572349 = 0.000 ... 1572.349 secs...\n", | |
"Extracting parameters from ./data/new_data/1909_eliseev.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2093299 = 0.000 ... 2093.299 secs...\n", | |
"Extracting parameters from ./data/new_data/1909_post_eeg_eliseev.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 842249 = 0.000 ... 842.249 secs...\n", | |
"Extracting parameters from ./data/new_data/0307_STRELKOVA.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2103349 = 0.000 ... 2103.349 secs...\n", | |
"Extracting parameters from ./data/new_data/3110_post_eeg_maistrenko.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 620899 = 0.000 ... 620.899 secs...\n", | |
"Extracting parameters from ./data/new_data/2606_patrakeeva_main_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2106049 = 0.000 ... 2106.049 secs...\n", | |
"Extracting parameters from ./data/new_data/1608_rpre_eeg_polshina.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 629449 = 0.000 ... 629.449 secs...\n", | |
"Extracting parameters from ./data/new_data/2510_pre_eeg_osipova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604099 = 0.000 ... 604.099 secs...\n", | |
"Extracting parameters from ./data/new_data/0311_eeg_popova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 1977699 = 0.000 ... 1977.699 secs...\n", | |
"Extracting parameters from ./data/new_data/0708_post_eeg_krasovskaya.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 614349 = 0.000 ... 614.349 secs...\n", | |
"Extracting parameters from ./data/new_data/14071200_limaskaya_post_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604849 = 0.000 ... 604.849 secs...\n", | |
"Extracting parameters from ./data/new_data/2510_osipova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 1958699 = 0.000 ... 1958.699 secs...\n", | |
"Extracting parameters from ./data/new_data/2809_post_eeg_lukyanov.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602149 = 0.000 ... 602.149 secs...\n", | |
"Extracting parameters from ./data/new_data/1207_shevchenko_pre_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 614199 = 0.000 ... 614.199 secs...\n", | |
"Extracting parameters from ./data/new_data/0708_eeg_krasovskaya.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2023149 = 0.000 ... 2023.149 secs...\n", | |
"Extracting parameters from ./data/new_data/2306_patrakeeva_pre_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Extracting parameters from ./data/new_data/0307_POST_EEG_sTRELKOVA.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 602149 = 0.000 ... 602.149 secs...\n", | |
"Extracting parameters from ./data/new_data/2509_eeg_rinata.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2129299 = 0.000 ... 2129.299 secs...\n", | |
"Extracting parameters from ./data/new_data/2509-pre_eeg_rinata.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 724899 = 0.000 ... 724.899 secs...\n", | |
"Extracting parameters from ./data/new_data/17_11_post_eeg_bachurina.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 610499 = 0.000 ... 610.499 secs...\n", | |
"Extracting parameters from ./data/new_data/1608_eeg_polshina.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 1961799 = 0.000 ... 1961.799 secs...\n", | |
"Extracting parameters from ./data/new_data/311_pre_eeg_mazurova.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 604349 = 0.000 ... 604.349 secs...\n", | |
"Extracting parameters from ./data/new_data/1509_zvyagincev.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 1910849 = 0.000 ... 1910.849 secs...\n", | |
"Extracting parameters from ./data/new_data/1407_limanskaya_eeg.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 2406349 = 0.000 ... 2406.349 secs...\n", | |
"Extracting parameters from ./data/new_data/3110_pre_eeg_maistrenko.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 663199 = 0.000 ... 663.199 secs...\n", | |
"Extracting parameters from ./data/new_data/17_11_bachurina.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 1979549 = 0.000 ... 1979.549 secs...\n", | |
"Extracting parameters from ./data/new_data/0307_STRELKOVA_PRE_EEG.vhdr...\n", | |
"Setting channel info structure...\n", | |
"Reading 0 ... 601999 = 0.000 ... 601.999 secs...\n" | |
] | |
} | |
], | |
"source": [ | |
"test_data = np.zeros((0,61))\n", | |
"\n", | |
"fail_count = 0\n", | |
"\n", | |
"for eeg_name in eeg_names:\n", | |
" try:\n", | |
" eeg_data = mne.io.read_raw_brainvision(eeg_dir + eeg_name, preload=True).get_data().T\n", | |
" test_data = np.append(test_data, eeg_data, axis = 0)\n", | |
" except FileNotFoundError:\n", | |
" fail_count += 1\n", | |
" continue" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"components_count = [1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 40, 45, 50, 55, 61]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"944.3816370159668\n", | |
"730.3861574688534\n", | |
"513.8760089270451\n", | |
"252.50333132341444\n", | |
"2.887346416340305e-12\n" | |
] | |
} | |
], | |
"source": [ | |
"for component in components_count:\n", | |
" pca = PCA(n_components= component)\n", | |
" pca.fit(X_train)\n", | |
" mpe = mean_absolute_percentage_error(test_data, pca.inverse_transform(pca.transform(test_data)))\n", | |
" print(mpe)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 43, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[942.0808953154711,\n", | |
" 872.3344151492266,\n", | |
" 874.9637985353154,\n", | |
" 889.6565415207315,\n", | |
" 907.8391569944413,\n", | |
" 909.1332226860354,\n", | |
" 884.1113909588582,\n", | |
" 887.8328095567409,\n", | |
" 881.3496461942931,\n", | |
" 925.4499352925958,\n", | |
" 944.3816370159668,\n", | |
" 730.3861574688534,\n", | |
" 513.8760089270451,\n", | |
" 252.50333132341444,\n", | |
" 2.887346416340305e-12]" | |
] | |
}, | |
"execution_count": 43, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"mpe_vars" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"0.0016314035042201565\n", | |
"0.0016102983279754294\n", | |
"0.0016019980084192942\n", | |
"0.0015971624333699828\n", | |
"0.0015894735352078237\n", | |
"0.0015882914363946757\n", | |
"0.0015719374634677284\n", | |
"0.001565565903113536\n", | |
"0.0015613648299206107\n", | |
"0.0015451522477676401\n", | |
"0.001346346235438015\n", | |
"0.0012655422074663765\n", | |
"0.0011972963641907223\n", | |
"0.0011434864579471342\n", | |
"1.6767685391527792e-33\n" | |
] | |
} | |
], | |
"source": [ | |
"mse_vars = []\n", | |
"for component in components_count:\n", | |
" pca = PCA(n_components= component)\n", | |
" pca.fit(X_train)\n", | |
" mse = mean_squared_error(test_data, pca.inverse_transform(pca.transform(test_data)))\n", | |
" print(mse)\n", | |
" mse_vars.append(mse)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[0.0016314035042201565,\n", | |
" 0.0016102983279754294,\n", | |
" 0.0016019980084192942,\n", | |
" 0.0015971624333699828,\n", | |
" 0.0015894735352078237,\n", | |
" 0.0015882914363946757,\n", | |
" 0.0015719374634677284,\n", | |
" 0.001565565903113536,\n", | |
" 0.0015613648299206107,\n", | |
" 0.0015451522477676401,\n", | |
" 0.001346346235438015,\n", | |
" 0.0012655422074663765,\n", | |
" 0.0011972963641907223,\n", | |
" 0.0011434864579471342,\n", | |
" 1.6767685391527792e-33]" | |
] | |
}, | |
"execution_count": 14, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"mse_vars" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"components_count = [1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 40, 45, 50, 55, 61]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sb" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n92273a6kpKQQVgQAgHfRXczKSLN4XJeR1kvRXfyfSfZFWAX6DTfcoIMHD+rw4cNqamqSzWaT1WoN\ndVkAAHhxpsUnAAAHwUlEQVQ1zTpAY4f3Vc9uXRVhknp266qxw/tqmnVA0GoIqyn3yMhIzZs3Tw8+\n+KCcTqemTJmigQMHhrosAAC8MkdE6J6xaZoyKlXmqC5yNjUHbWR+TlgFuiSNGjVKo0aNCnUZAABc\nsuguZll6/b+QHIcQVlPuAADg8hDoAAAYAIEOAIABEOgAABgAgQ4AgAEQ6AAAGACBDgCAARDoAAAY\ngMnlcrlCXQQAAPAPI3QAAAyAQAcAwAAIdAAADIBABwDAAAh0AAAMgEAHAMAAOk2gb9myRVlZWRo3\nbpwKCgouWO9yubRgwQKNGzdOubm5+tvf/haCKsPbxXq4Zs0a5ebmKjc3V9OnT9eePXtCUGV4u1gP\nzykvL9d1112nd999N4jVdQy+9PCjjz7SpEmTlJOTo3vvvTfIFXYMF+tjfX29fvKTn+iOO+5QTk6O\nVq5cGYIqw9ecOXOUmZmpiRMnelwfkkxxdQJnzpxxjRkzxnXo0CGXw+Fw5ebmuvbv399qm02bNrn+\n8R//0dXS0uIqKytzTZ06NUTVhidferhr1y7X8ePHXS7X2X7Sw9Z86eG57e677z7Xgw8+6PrTn/4U\ngkrDly89rKurc2VnZ7u++uorl8vlch09ejQUpYY1X/r4u9/9zvXCCy+4XC6Xq6amxnXjjTe6HA5H\nKMoNSzt27HB9+umnrpycHI/rQ5EpnWKEXl5ern79+iklJUVRUVHKyclRaWlpq21KS0uVl5cnk8mk\noUOH6sSJE6qqqgpRxeHHlx4OGzZM3bt3lyQNHTpUlZWVoSg1bPnSQ0n67//+b2VlZalnz54hqDK8\n+dLDd955R+PGjVPv3r0liT564EsfTSaTTp48KZfLpZMnT6p79+6KjIwMUcXh58Ybb3S/33kSikzp\nFIFut9uVnJzsvp2UlCS73e51m+Tk5Au26cx86eH5CgsLNXLkyGCU1mH4+v9hSUmJ7r777mCX1yH4\n0sODBw/qxIkTuu+++zR58mQVFRUFu8yw50sff/SjH+nAgQMaMWKE7rjjDs2dO1cREZ0iMtpFKDKF\nj1tod9u3b1dhYaGWL18e6lI6nIULF+rxxx/njdMPTqdTf/vb37Rs2TI1NjZq+vTpSk9P1zXXXBPq\n0jqUDz74QIMHD9brr7+uQ4cOKT8/X8OHD1dsbGyoS0MbOkWgJyUltZr+tdvtSkpK8rpNZWXlBdt0\nZr70UJL27Nmjp59+Wq+++qri4+ODWWLY86WHn376qR599FFJUm1trTZv3qzIyEiNHTs2qLWGK196\nmJycrB49eigmJkYxMTEaPny49uzZQ6Cfx5c+rlq1SjNnzpTJZFK/fv3Ut29fff755xoyZEiwy+2Q\nQpEpnWIYcMMNN+jgwYM6fPiwmpqaZLPZZLVaW21jtVpVVFQkl8ulv/zlL4qLi1NiYmKIKg4/vvTw\n66+/1k9/+lO98MILvHl64EsPN27c6P6XlZWlX/3qV4T5eXzp4ZgxY7Rr1y6dOXNGp0+fVnl5uVJT\nU0NUcXjypY9XXnmltm3bJkk6evSovvjiC/Xt2zcU5XZIociUTjFCj4yM1Lx58/Tggw/K6XRqypQp\nGjhwoN544w1J0t13361Ro0Zp8+bNGjdunK644go999xzIa46vPjSw8WLF+v48eOaP3++JMlsNmvV\nqlWhLDus+NJDeOdLD1NTU93f+0ZERGjq1KlKS0sLceXhxZc+Pvzww5ozZ45yc3Plcrn0+OOPKyEh\nIcSVh49HH31UO3bsUG1trUaOHKmf/vSnOnPmjKTQZQqXTwUAwAA6xZQ7AABGR6ADAGAABDoAAAZA\noAMAYAAEOgAABkCgA51cXV2dhgwZogULFriXvfLKK3r++ecvet9Vq1Zp1qxZgSwPgI8IdKCTW7t2\nrdLT02Wz2dTU1BTqcgBcJgId6ORWrlyphx9+WIMGDfJ49bdVq1YpPz9fP/nJTzRhwgTdf//9rS4y\n0dDQoNmzZysnJ0fTp09XdXW1JGnv3r265557dOedd2rChAlatmxZsJ4S0CkR6EAntmfPHh0/flw3\n33yzJk+erJUrV3rcbteuXXryySe1bt063XTTTVq4cKF73V//+lf94he/kM1m04ABA/Q///M/kqQ+\nffpo2bJlWr16td5++2299dZbOnDgQFCeF9AZEehAJ1ZYWKhJkybJZDJp/PjxKi8v93iJx+9///vq\n37+/JOmHP/yhtm/f7l43bNgwXXnllZKk9PR0HTp0SJLU2Niop556Srm5ubr77rtVVVWlPXv2BOFZ\nAZ1TpziXO4ALNTU1ae3atYqKilJxcbEkqbm5+ZLPvx8dHe3+22w2y+l0SpJeeuklWSwW/du//Zsi\nIyM1Y8YMORyO9nsCAFphhA50UqWlpbrmmmu0ZcsW9xXeXnvtNa1evfqCbT/55BMdPHhQ0tnv3G++\n+eaL7r++vl7JycmKjIzUvn37tHPnzvZ+CgDOwwgd6KRWrlyp3NzcVssyMjLU0tKiHTt26Prrr3cv\nHzZsmJ5//nl9+eWX6tWrl/793//9ovt/6KGH9OSTT6qwsFDXXHONbrzxxnZ/DgC+xdXWAHi1atUq\nbdq0SS+//HKoSwHgBVPuAAAYACN0AAAMgBE6AAAGQKADAGAABDoAAAZAoAMAYAAEOgAABkCgAwBg\nAP8f9cbYfMPApCwAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fab778d9710>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(components_count) / 61.\n", | |
"y = np.array(mpe_vars)\n", | |
"plt.scatter(x, y, label = \"PCA\")\n", | |
"plt.title(\"MAPE vs Alpha\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"MAPE\")\n", | |
"plt.legend()\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n/IMGDVJpaakOHjyo+vp6ORwO2e32Rn3sdrtyc3NlGIb27t2rsLAwRUdHq7a2VjU1NZKk2tpavf32\n20pMTGxfapAZAAAO7ElEQVS0jiTl5uZq3Lhx/toFAAA6Hb9N9VutVi1dulRz5syRy+VSRkaGEhMT\nlZOTI0maMWOGxo4dq4KCAiUnJ6t79+5auXKlpHPn8e+9915J534dMHnyZI0ZM0aSNHfuXC1cuFCb\nNm1Snz59tGbNGn/tAgAAnY7FMAwj0IPwN1+cQ+F8lveoofeoofeooW9QR+91unP8AACg4yH4AQAw\nEYIfAAATIfgBADARgh8AABMh+AEAMBGCHwAAEyH4AQAwEYIfAAATIfgBADARgh8AABMh+AEAMBGC\nHwAAEyH4AQAwEYIfAAATIfgBADARgh8AABMh+AEAMBGCHwAAEyH4AQAwEYIfAAATIfgBADARgh8A\nABMh+AEAMBGCHwAAEyH4AQAwEYIfAAAT8WvwFxYWauLEiUpOTlZ2dnaTdsMwtHz5ciUnJys1NVWf\nfPKJJOnbb7/VzJkzNWnSJKWkpGjDhg3udZ5++mmNHj1aaWlpSktLU0FBgT93AQCATsXqrw27XC5l\nZWXp+eefl81m09SpU2W329W/f393n8LCQpWWlmrHjh368MMPtWzZMr3yyisKDg7WI488ogEDBqim\npkYZGRm68cYb3evOmjVLs2fP9tfQAQDotPx2xF9UVKT4+HjFxcUpJCREKSkpys/Pb9QnPz9f6enp\nslgsGjp0qI4dO6by8nJFR0drwIABkqTQ0FAlJCTI6XT6a6gAAJiG34Lf6XQqJibG/d5mszUJ7wv7\nxMTENOlz6NAhffrppxoyZIh72caNG5WamqrFixerurraT3sAAEDn47epfl84ceKEFixYoEcffVSh\noaGSpBkzZmj+/PmyWCxau3atVq1apccff9zjdsLDe8hqDfZ6PFFRYV5vw+yoofeoofeooW9QR+8F\nooZ+C36bzaaysjL3e6fTKZvN5rFPWVmZu8/p06e1YMECpaamasKECe4+vXv3dr+eNm2a5s2b1+pY\nqqpqL3k/GkRFhami4rjX2zEzaug9aug9augb1NF7/qyhpy8UfpvqHzRokEpLS3Xw4EHV19fL4XDI\nbrc36mO325WbmyvDMLR3716FhYUpOjpahmFoyZIlSkhIUGZmZqN1ysvL3a/z8vKUmJjor10AAKDT\n8dsRv9Vq1dKlSzVnzhy5XC5lZGQoMTFROTk5ks5N2Y8dO1YFBQVKTk5W9+7dtXLlSknS+++/r61b\ntyopKUlpaWmSpEWLFmns2LFavXq1iouLJUmxsbHKysry1y4AANDpWAzDMAI9CH/zxVQK01reo4be\no4beo4a+QR291+mm+gEAQMdD8AMAYCIEPwAAJkLwAwBgIgQ/AAAmQvADAGAiBD8AACZC8AMAYCIE\nPwAAJkLwAwBgIgQ/AAAmQvADAGAiBD8AACZC8AMAYCIEPwAAJkLwAwBgIgQ/AAAmQvADAGAiBD8A\nACZC8AMAYCIEPwAAJkLwAwBgIgQ/AAAmQvADAGAiBD8AACZC8AMAYCIEPwAAJkLwAwDQzupOu/Tt\n4ROqO+1q98/2a/AXFhZq4sSJSk5OVnZ2dpN2wzC0fPlyJScnKzU1VZ988kmr6x49elSZmZmaMGGC\nMjMzVV1d7c9dAADAZ1xnz+qFvH365Z926e5Vefrln3bphbx9cp09225j8Fvwu1wuZWVl6dlnn5XD\n4dC2bdu0f//+Rn0KCwtVWlqqHTt26LHHHtOyZctaXTc7O1ujRo3Sjh07NGrUqGa/UAAA0BG9tHO/\n8t47pMpjdTIMqfJYnfLeO6SXdu5vfWUf8VvwFxUVKT4+XnFxcQoJCVFKSory8/Mb9cnPz1d6eros\nFouGDh2qY8eOqby83OO6DetIUnp6uvLy8vy1CwAA+EzdaZf27Ktotm3PvsPtNu1v9deGnU6nYmJi\n3O9tNpuKioo89omJiZHT6fS4bmVlpaKjoyVJUVFRqqysbHUs4eE9ZLUGe7U/5z4vzOttmB019B41\n9B419A3qeHG+PXxCR47XNdtWdfyUgkO6KKr3FX4fh9+Cvz1YLBZZLJZW+1VV1Xr9WVFRYaqoOO71\ndsyMGnqPGnqPGvoGdbx4rtMuRYR1VeWxpuEfHtZNrvrTPquppy9lfpvqt9lsKisrc793Op2y2Wwe\n+5SVlclms3lcNzIyUuXl5ZKk8vJyRURE+GsXAADwma5dgjUsKarZtmFJvdW1i/cz023ht+AfNGiQ\nSktLdfDgQdXX18vhcMhutzfqY7fblZubK8MwtHfvXoWFhSk6Otrjug3rSFJubq7GjRvnr10AAMCn\nptv7a/yIvor8XjcFWaTI73XT+BF9Nd3ev93G4LepfqvVqqVLl2rOnDlyuVzKyMhQYmKicnJyJEkz\nZszQ2LFjVVBQoOTkZHXv3l0rV670uK4kzZ07VwsXLtSmTZvUp08frVmzxl+7AACATwUHBemO8UnK\nGNtPwSFd5Ko/3W5H+g0shmEY7fqJAeCLcyacz/IeNfQeNfQeNfQN6ug9f9YwIOf4AQBAx0PwAwBg\nIgQ/AAAmQvADAGAiBD8AACZC8AMAYCIEPwAAJkLwAwBgIgQ/AAAmQvADAGAiBD8AACZC8AMAYCIE\nPwAAJkLwAwBgIgQ/AAAmQvADAGAiBD8AACZC8AMAYCIEPwAAJkLwAwBgIgQ/AAAmQvADAGAiBD8A\nACZC8AMAYCIEPwAAJmIxDMMI9CAAAED74IgfAAATIfgBADARgh8AABMh+AEAMBGCHwAAEyH4AQAw\nEYL/PIWFhZo4caKSk5OVnZ3dpN0wDC1fvlzJyclKTU3VJ598EoBRdnyt1fG1115TamqqUlNTdfvt\nt6u4uDgAo+zYWqthg6KiIv3gBz/QG2+80Y6juzy0pYbvvvuu0tLSlJKSorvuuqudR9jxtVbD48eP\na968ebr11luVkpKiV199NQCj7NgWL16sUaNGafLkyc22ByRXDBiGYRhnzpwxxo0bZ3z11VdGXV2d\nkZqaanz++eeN+rz55pvG7NmzjbNnzxp79uwxpk6dGqDRdlxtqeP7779vHD161DCMczWljo21pYYN\n/WbOnGnMmTPH+O///u8AjLTjaksNq6urjVtuucX4+uuvDcMwjMOHDwdiqB1WW2r4zDPPGE888YRh\nGIZRWVlpjBw50qirqwvEcDus3bt3Gx9//LGRkpLSbHsgcoUj/n8qKipSfHy84uLiFBISopSUFOXn\n5zfqk5+fr/T0dFksFg0dOlTHjh1TeXl5gEbcMbWljsOHD1fPnj0lSUOHDlVZWVkghtphtaWGkvSX\nv/xFEydOVGRkZABG2bG1pYavv/66kpOT1adPH0mijhdoSw0tFotOnDghwzB04sQJ9ezZU1arNUAj\n7phGjhzp/veuOYHIFYL/n5xOp2JiYtzvbTabnE6nxz4xMTFN+phdW+p4vk2bNmnMmDHtMbTLRlv/\nLubl5WnGjBntPbzLQltqWFpaqmPHjmnmzJmaMmWKcnNz23uYHVpbanjnnXeqpKREo0eP1q233qol\nS5YoKIhYuRiByBW+miFgdu3apU2bNumFF14I9FAuOytWrNBDDz3EP7JecLlc+uSTT7R+/XqdOnVK\nt99+u4YMGaKrrroq0EO7bPztb3/Ttddeqz//+c/66quvlJmZqREjRig0NDTQQ4MHBP8/2Wy2RlPO\nTqdTNpvNY5+ysrImfcyuLXWUpOLiYv3yl7/Un/70J4WHh7fnEDu8ttTw448/1qJFiyRJVVVVKigo\nkNVq1fjx49t1rB1VW2oYExOjXr16qUePHurRo4dGjBih4uJigv+f2lLDzZs3a+7cubJYLIqPj1ff\nvn114MABDR48uL2He9kKRK5wuPBPgwYNUmlpqQ4ePKj6+no5HA7Z7fZGfex2u3Jzc2UYhvbu3auw\nsDBFR0cHaMQdU1vq+M033+j+++/XE088wT+yzWhLDXfu3On+M3HiRP36178m9M/TlhqOGzdO77//\nvs6cOaOTJ0+qqKhI/fr1C9CIO5621PDKK6/UO++8I0k6fPiwvvjiC/Xt2zcQw71sBSJXOOL/J6vV\nqqVLl2rOnDlyuVzKyMhQYmKicnJyJEkzZszQ2LFjVVBQoOTkZHXv3l0rV64M8Kg7nrbU8Y9//KOO\nHj2q3/zmN5Kk4OBgbd68OZDD7lDaUkN41pYa9uvXz31uOigoSFOnTlVSUlKAR95xtKWG8+fP1+LF\ni5WamirDMPTQQw8pIiIiwCPvWBYtWqTdu3erqqpKY8aM0f33368zZ85IClyu8FheAABMhKl+AABM\nhOAHAMBECH4AAEyE4AcAwEQIfgAATITgB9Am1dXVGjx4sJYvX+5e9vTTT+u3v/1tq+tu3rxZCxYs\n8OfwALQRwQ+gTbZt26YhQ4bI4XCovr4+0MMBcIkIfgBt8uqrr2r+/Pm6+uqrm31a4ObNm5WZmal5\n8+Zp0qRJ+slPftLoYSM1NTVauHChUlJSdPvtt6uiokKS9Nlnn+mOO+7QbbfdpkmTJmn9+vXttUuA\nKRH8AFpVXFyso0eP6oYbbtCUKVP06quvNtvv/fff189//nNt375dP/zhD7VixQp320cffaRf/OIX\ncjgc6t+/vzZu3ChJio2N1fr167Vlyxa98sorevnll1VSUtIu+wWYEcEPoFWbNm1SWlqaLBaLJkyY\noKKiomYfHXrdddcpISFBkjRt2jTt2rXL3TZ8+HBdeeWVkqQhQ4boq6++kiSdOnVKjz76qFJTUzVj\nxgyVl5eruLi4HfYKMCfu1Q/Ao/r6em3btk0hISHaunWrJOn06dMX/XyFrl27ul8HBwfL5XJJkn73\nu98pKipKq1atktVq1U9/+lPV1dX5bgcANMIRPwCP8vPzddVVV6mwsND9RMDnnntOW7ZsadL3gw8+\nUGlpqaRz1wTccMMNrW7/+PHjiomJkdVq1b59+/Tee+/5ehcAnIcjfgAevfrqq0pNTW20bNiwYTp7\n9qx2796tgQMHupcPHz5cv/3tb/Xll1+qd+/eWr16davbv+eee/Tzn/9cmzZt0lVXXaWRI0f6fB8A\nfIen8wHwic2bN+vNN9/UU089FeihAPCAqX4AAEyEI34AAEyEI34AAEyE4AcAwEQIfgAATITgBwDA\nRAh+AABMhOAHAMBE/j9IekHRGc9nWwAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f076c3869b0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(components_count) / 61.\n", | |
"y = np.array(mse_vars) * 100\n", | |
"plt.scatter(x, y, label = \"PCA\")\n", | |
"plt.title(\"MSE vs Alpha\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"MSE\")\n", | |
"plt.legend()\n", | |
"plt.show()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"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.6.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment