├── questionare.xlsx ├── eegdata_72var.xlsx ├── README.md ├── main.py ├── extract_data.py ├── basic_model_kfold.ipynb ├── mymontage.xml └── permutation_importance.ipynb /questionare.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manfred1201/EEGprocessing/HEAD/questionare.xlsx -------------------------------------------------------------------------------- /eegdata_72var.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manfred1201/EEGprocessing/HEAD/eegdata_72var.xlsx -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EEGprocessing 2 | 本文件为读取EEG数据文件并进行预处理,以及机器学习建模的代码文档 3 | 视频说明详见:https://www.bilibili.com/video/BV18q4y1m7C5?spm_id_from=333.999.0.0 4 | 5 | 原始数据已上传至百度网盘:链接:https://pan.baidu.com/s/1zwNA6lMvgJbSZZMTIwtCfw 提取码:9e87 6 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | import os 4 | import numpy as np 5 | import pandas as pd 6 | import mne 7 | import matplotlib.pyplot as plt 8 | import xml.etree.ElementTree 9 | from xml.etree.ElementTree import parse 10 | xml = parse('rawdata\mymontage.xml') 11 | root = xml.getroot() 12 | mydic = dict() 13 | for channel in root.findall('CHANNEL'): 14 | label = channel.find('LABEL') 15 | pos = channel.find('POSITION') 16 | if pos is None: 17 | continue 18 | lis = pos.text.split() 19 | a = np.array(lis).astype(np.float64) / 1000 20 | a[0] = -a[0] 21 | a[1] = -a[1] 22 | mydic[label.text] = a 23 | mymontage = mne.channels.make_dig_montage(ch_pos=mydic,coord_frame='head') 24 | 25 | 26 | #导入数据并剔除无用channels 27 | raw = mne.io.read_raw_eeglab('rawdata/eeg/f008.set') 28 | raw.set_channel_types({'VEOG':'eog'}) 29 | raw.pick(picks='all',exclude=['HEOG','EKG','EMG','Trigger']) 30 | 31 | #电极定位 32 | raw.set_montage(mymontage,on_missing='warn') 33 | 34 | #提取社会奖赏实验的片段 35 | events = mne.events_from_annotations(raw) 36 | ind = np.where(events[0][:,2] == events[1]['14'])[0].min() 37 | start_t = events[0][ind,0] - 5000 38 | ind = np.where(events[0][:,2] == events[1]['18'])[0].max() 39 | end_t = events[0][ind,0] + 8500 40 | raw_cropped = raw.copy() 41 | raw_cropped.crop(tmin=start_t/1000,tmax=end_t/1000) 42 | 43 | 44 | #插值坏导 45 | raw_cropped.plot(start=20,duration=1,n_channels=33,block=True,title='请检查并选中坏导') #定义坏导 46 | plt.show() 47 | badflag = False 48 | if raw_cropped.info['bads']: 49 | print('已选择坏导: ',raw_cropped.info['bads'], '开始进行插值') 50 | badflag = True 51 | else: 52 | print('无坏导,跳过插值') 53 | if badflag: 54 | raw_cropped.load_data() 55 | raw_cropped.interpolate_bads(exclude=['F11','F12','FT11','FT12']) 56 | raw_cropped.plot(start=20,duration=1,n_channels=33,block=True,title='坏导插值完成,如无误请关闭窗口') 57 | plt.show() 58 | 59 | 60 | 61 | #重参考 62 | raw_ref = raw_cropped.copy() 63 | raw_ref.load_data() 64 | raw_ref.set_eeg_reference(ref_channels=['M1','M2']) 65 | raw_ref.plot(start=20,duration=1,block=True,title='重参考完成,无误请关闭窗口') 66 | plt.show() 67 | 68 | 69 | #滤波 70 | raw_filter = raw_ref.copy() 71 | raw_filter.filter(l_freq=1,h_freq=30) 72 | raw_filter.notch_filter(freqs=50) 73 | raw_filter.plot_psd(fmax=60) 74 | plt.show(block=False) 75 | raw_filter.plot(start=20,duration=1,block=True,title='滤波完成,准备ICA,无误请关闭窗口') 76 | 77 | #ICA 78 | ica = mne.preprocessing.ICA(n_components=10, method='picard', max_iter=800) 79 | ica.fit(raw_filter) 80 | raw_filter.load_data() 81 | ica.plot_components() 82 | ica.plot_sources(raw_filter, show_scrollbars=False, title='请选择需要去除的成分') 83 | plt.show(block=True) 84 | print(ica) 85 | raw_recons = raw_filter.copy() 86 | raw_recons = ica.apply(raw_recons) 87 | raw_filter.plot(start=20,duration=1,n_channels=33,title='ICA处理前, 确认请关闭') 88 | raw_recons.plot(start=20,duration=1,n_channels=33,title='ICA处理后, 确认请关闭') 89 | plt.show(block=True) 90 | 91 | #提取epochs 92 | events = mne.events_from_annotations(raw_recons) 93 | event_dic = {'pos' : events[1]['20'], 'neg' : events[1]['22']} 94 | reject_criteria = dict(eeg=100e-6) # 100 µV 95 | epochs = mne.Epochs(raw_recons, events[0], event_id=event_dic, preload=True, tmax=1, tmin=-0.2, reject=reject_criteria) 96 | epochs.plot(events=events[0],block=True,title='请目视挑选出坏EPOCHES') 97 | plt.show() 98 | 99 | #对两个condition的epochs做平均 100 | #epochs.equalize_event_counts(['pos','neg']) 是否需要将两个condition一一对应?? 101 | pos_epochs = epochs['pos'] 102 | neg_epochs = epochs['neg'] 103 | 104 | pos_evoked = pos_epochs.average() 105 | neg_evoked = neg_epochs.average() 106 | neg_evoked.plot() 107 | plt.show(block=True) 108 | pos_evoked.save('pos_ave.fif') 109 | neg_evoked.save('neg_ave.fif') 110 | #最终可视化差异 111 | mne.viz.plot_compare_evokeds(dict(positive=pos_evoked,negative=neg_evoked),combine='mean',picks = np.arange(32), invert_y=True, legend=True, ci=True) 112 | plt.show() -------------------------------------------------------------------------------- /extract_data.py: -------------------------------------------------------------------------------- 1 | import os 2 | import numpy as np 3 | import pandas as pd 4 | import mne 5 | import time 6 | from mne.viz.utils import _convert_psds 7 | import matplotlib.pyplot as plt 8 | import xml.etree.ElementTree 9 | from xml.etree.ElementTree import parse 10 | 11 | def find_close(arr, e): 12 | low = 0 13 | high = len(arr) - 1 14 | idx = -1 15 | 16 | while low <= high: 17 | mid = int((low + high) / 2) 18 | if e == arr[mid] or mid == low: 19 | idx = mid 20 | break 21 | elif e > arr[mid]: 22 | low = mid 23 | elif e < arr[mid]: 24 | high = mid 25 | return idx, idx+1 26 | 27 | def auc(x,y,x1,x2): 28 | if x1 not in x: 29 | bd1, bd2 = find_close(x, x1) 30 | x1y = (y[bd2]-y[bd1])/(x[bd2]-x[bd1])*(x1-x[bd1])+y[bd1] 31 | x = np.insert(x,bd2,x1) 32 | y = np.insert(y,bd2,x1y) 33 | if x2 not in x: 34 | bd1, bd2 = find_close(x, x2) 35 | x2y = (y[bd2]-y[bd1])/(x[bd2]-x[bd1])*(x2-x[bd1])+y[bd1] 36 | x = np.insert(x,bd2,x2) 37 | y = np.insert(y,bd2,x2y) 38 | idx1 = int(np.where(x==x1)[0]) 39 | idx2 = int(np.where(x==x2)[0]) 40 | ans = np.trapz(y=y[idx1:idx2+1],x=x[idx1:idx2+1]) 41 | return ans 42 | 43 | picks_front = ['Fp1','Fp2','Fz','F3','F4','F7','F8','F11','F12'] 44 | picks_top = ['Cz','FC3','FCz','FC4','C3','C4','CP3','CPz','CP4'] 45 | picks_left = ['FT11','T7','M1','C3','FC3','CP3'] 46 | picks_right = ['FT12','T8','M2','C4','FC4','CP4'] 47 | picks_back = ['Oz','O1','O2','Pz','P3','P4','P7','P8'] 48 | picks_list = list([picks_front, picks_top, picks_left, picks_right, picks_back]) 49 | #被试数量 50 | path = 'data\\' 51 | filename = os.listdir(path) 52 | filelist=[] 53 | for i in filename: 54 | if i[-3:] == 'fif': 55 | filelist.append(os.path.join(path,i)) 56 | print('总计被试数量: ', len(filelist)) 57 | all_data = np.empty((1,62),dtype=' 2 | 3 | 4 | 0 5 | 1 6 | 7 | 29.000000 -104.536000 33.125500 8 | 0 9 | 1000 10 | V 11 | 0.000000 12 | 400.000000 13 | 14 | 15 | 9 16 | 10 17 | 18 | 80.000000 -18.563800 -39.413000 19 | 0 20 | 1000 21 | V 22 | 0.000000 23 | 400.000000 24 | 25 | 26 | 10 27 | 11 28 | 29 | 62.000000 -47.610000 106.204000 30 | 0 31 | 1000 32 | V 33 | 0.000000 34 | 400.000000 35 | 36 | 37 | 11 38 | 12 39 | 40 | -3.000000 -57.272800 137.295000 41 | 0 42 | 1000 43 | V 44 | 0.000000 45 | 400.000000 46 | 47 | 48 | 12 49 | 13 50 | 51 | -63.000000 -48.371900 104.102000 52 | 0 53 | 1000 54 | V 55 | 0.000000 56 | 400.000000 57 | 58 | 59 | 13 60 | 14 61 | 62 | -79.000000 -16.394000 -32.112900 63 | 0 64 | 1000 65 | V 66 | 0.000000 67 | 400.000000 68 | 69 | 70 | 14 71 | 15 72 | 73 | 84.000000 -3.519880 38.853700 74 | 0 75 | 1000 76 | V 77 | 0.000000 78 | 400.000000 79 | 80 | 81 | 15 82 | 16 83 | 84 | 69.000000 -14.764200 118.085000 85 | 0 86 | 1000 87 | V 88 | 0.000000 89 | 400.000000 90 | 91 | 92 | 16 93 | 17 94 | 95 | -3.000000 -22.025800 154.489000 96 | 0 97 | 1000 98 | V 99 | 0.000000 100 | 400.000000 101 | 102 | 103 | 17 104 | 18 105 | 106 | -69.000000 -15.757500 117.969000 107 | 0 108 | 1000 109 | V 110 | 0.000000 111 | 400.000000 112 | 113 | 114 | 18 115 | 19 116 | 117 | -84.000000 -3.982770 42.826800 118 | 0 119 | 1000 120 | V 121 | 0.000000 122 | 400.000000 123 | 124 | 125 | 1 126 | 2 127 | 128 | -30.000000 -104.651000 34.118700 129 | 0 130 | 1000 131 | V 132 | 0.000000 133 | 400.000000 134 | 135 | 136 | 19 137 | 20 138 | 139 | 67.000000 22.980500 122.482000 140 | 0 141 | 1000 142 | V 143 | 0.000000 144 | 400.000000 145 | 146 | 147 | 20 148 | 21 149 | 150 | -3.000000 17.821200 158.125000 151 | 0 152 | 1000 153 | V 154 | 0.000000 155 | 400.000000 156 | 157 | 158 | 21 159 | 22 160 | 161 | -67.000000 19.007400 122.019000 162 | 0 163 | 1000 164 | V 165 | 0.000000 166 | 400.000000 167 | 168 | 169 | 22 170 | 23 171 | 172 | 76.000000 41.254900 8.833460 173 | 0 174 | 1000 175 | V 176 | 0.000000 177 | 400.000000 178 | 179 | 180 | 23 181 | 24 182 | 183 | -77.000000 38.458300 15.555000 184 | 0 185 | 1000 186 | V 187 | 0.000000 188 | 400.000000 189 | 190 | 191 | 24 192 | 25 193 | 194 | 73.000000 54.505100 50.647700 195 | 0 196 | 1000 197 | V 198 | 0.000000 199 | 400.000000 200 | 201 | 202 | 25 203 | 26 204 | 205 | 56.000000 55.160900 114.150000 206 | 0 207 | 1000 208 | V 209 | 0.000000 210 | 400.000000 211 | 212 | 213 | 26 214 | 27 215 | 216 | -2.000000 52.913900 142.078000 217 | 0 218 | 1000 219 | V 220 | 0.000000 221 | 400.000000 222 | 223 | 224 | 27 225 | 28 226 | 227 | -56.000000 53.174300 113.919000 228 | 0 229 | 1000 230 | V 231 | 0.000000 232 | 400.000000 233 | 234 | 235 | 28 236 | 29 237 | 238 | -72.000000 52.171400 53.396100 239 | 0 240 | 1000 241 | V 242 | 0.000000 243 | 400.000000 244 | 245 | 246 | 2 247 | 3 248 | 249 | 74.000000 -46.771000 -30.618100 250 | 0 251 | 1000 252 | V 253 | 0.000000 254 | 400.000000 255 | 256 | 257 | 29 258 | 30 259 | 260 | 29.000000 91.854400 67.080300 261 | 0 262 | 1000 263 | V 264 | 0.000000 265 | 400.000000 266 | 267 | 268 | 30 269 | 31 270 | 271 | -1.000000 94.024200 74.380400 272 | 0 273 | 1000 274 | V 275 | 0.000000 276 | 400.000000 277 | 278 | 279 | 31 280 | 32 281 | 282 | -30.000000 90.745400 67.957800 283 | 0 284 | 1000 285 | V 286 | 0.000000 287 | 400.000000 288 | 289 | 290 | 32 291 | 33 292 | 293 | -1.000000 -106.763000 78.170300 294 | 0 295 | 0 296 | V 297 | 0.000000 298 | 400.000000 299 | 300 | 301 | 33 302 | 34 303 | 304 | -3.000000 -2.391590 158.790000 305 | 0 306 | 0 307 | V 308 | 0.000000 309 | 400.000000 310 | 311 | 312 | 34 313 | 35 314 | 315 | 0 316 | 0 317 | V 318 | 0.000000 319 | 400.000000 320 | 321 | 322 | 35 323 | 36 324 | 325 | 0 326 | 0 327 | V 328 | 0.000000 329 | 400.000000 330 | 331 | 332 | 36 333 | 37 334 | 335 | 0 336 | 0 337 | V 338 | 0.000000 339 | 400.000000 340 | 341 | 342 | 37 343 | 38 344 | 345 | 0 346 | 0 347 | V 348 | 0.000000 349 | 400.000000 350 | 351 | 352 | 38 353 | 39 354 | 355 | 0 356 | 0 357 | V 358 | 0.000000 359 | 400.000000 360 | 361 | 362 | 3 363 | 4 364 | 365 | 70.000000 -61.892100 30.039500 366 | 0 367 | 1000 368 | V 369 | 0.000000 370 | 400.000000 371 | 372 | 373 | 39 374 | 40 375 | 376 | 0 377 | 0 378 | V 379 | 0.000000 380 | 400.000000 381 | 382 | 383 | 40 384 | 41 385 | 386 | 0 387 | 0 388 | V 389 | 0.000000 390 | 400.000000 391 | 392 | 393 | 41 394 | 42 395 | 396 | 0 397 | 0 398 | V 399 | 0.000000 400 | 400.000000 401 | 402 | 403 | 42 404 | 43 405 | 406 | 0 407 | 0 408 | V 409 | 0.000000 410 | 400.000000 411 | 412 | 413 | 43 414 | 44 415 | 416 | 0 417 | 0 418 | V 419 | 0.000000 420 | 400.000000 421 | 422 | 423 | 44 424 | 45 425 | 426 | 0 427 | 0 428 | V 429 | 0.000000 430 | 400.000000 431 | 432 | 433 | 45 434 | 46 435 | 436 | 0 437 | 0 438 | V 439 | 0.000000 440 | 400.000000 441 | 442 | 443 | 46 444 | 47 445 | 446 | 0 447 | 0 448 | V 449 | 0.000000 450 | 400.000000 451 | 452 | 453 | 47 454 | 48 455 | 456 | 0 457 | 0 458 | V 459 | 0.000000 460 | 400.000000 461 | 462 | 463 | 48 464 | 49 465 | 466 | 0 467 | 0 468 | V 469 | 0.000000 470 | 400.000000 471 | 472 | 473 | 4 474 | 5 475 | 476 | 52.000000 -76.781600 88.710700 477 | 0 478 | 1000 479 | V 480 | 0.000000 481 | 400.000000 482 | 483 | 484 | 49 485 | 50 486 | 487 | 0 488 | 0 489 | V 490 | 0.000000 491 | 400.000000 492 | 493 | 494 | 50 495 | 51 496 | 497 | 0 498 | 0 499 | V 500 | 0.000000 501 | 400.000000 502 | 503 | 504 | 51 505 | 52 506 | 507 | 0 508 | 0 509 | V 510 | 0.000000 511 | 400.000000 512 | 513 | 514 | 52 515 | 53 516 | 517 | 0 518 | 0 519 | V 520 | 0.000000 521 | 400.000000 522 | 523 | 524 | 53 525 | 54 526 | 527 | 0 528 | 0 529 | V 530 | 0.000000 531 | 400.000000 532 | 533 | 534 | 54 535 | 55 536 | 537 | 0 538 | 0 539 | V 540 | 0.000000 541 | 400.000000 542 | 543 | 544 | 55 545 | 56 546 | 547 | 0 548 | 0 549 | V 550 | 0.000000 551 | 400.000000 552 | 553 | 554 | 56 555 | 57 556 | 557 | 0 558 | 0 559 | V 560 | 0.000000 561 | 400.000000 562 | 563 | 564 | 57 565 | 58 566 | 567 | 0 568 | 0 569 | V 570 | 0.000000 571 | 400.000000 572 | 573 | 574 | 58 575 | 59 576 | 577 | 0 578 | 0 579 | V 580 | 0.000000 581 | 400.000000 582 | 583 | 584 | 5 585 | 6 586 | 587 | -2.000000 -88.729900 113.494000 588 | 0 589 | 1000 590 | V 591 | 0.000000 592 | 400.000000 593 | 594 | 595 | 59 596 | 60 597 | 598 | 0 599 | 0 600 | V 601 | 0.000000 602 | 400.000000 603 | 604 | 605 | 60 606 | 61 607 | 608 | 0 609 | 0 610 | V 611 | 0.000000 612 | 400.000000 613 | 614 | 615 | 61 616 | 62 617 | 618 | 0 619 | 0 620 | V 621 | 0.000000 622 | 400.000000 623 | 624 | 625 | 62 626 | 63 627 | 628 | 0 629 | 0 630 | V 631 | 0.000000 632 | 400.000000 633 | 634 | 635 | 63 636 | 64 637 | 638 | 0 639 | 0 640 | V 641 | 0.000000 642 | 400.000000 643 | 644 | 645 | 6 646 | 7 647 | 648 | -53.000000 -78.652500 87.485900 649 | 0 650 | 1000 651 | V 652 | 0.000000 653 | 400.000000 654 | 655 | 656 | 7 657 | 8 658 | 659 | -70.000000 -61.245900 33.135100 660 | 0 661 | 1000 662 | V 663 | 0.000000 664 | 400.000000 665 | 666 | 667 | 8 668 | 9 669 | 670 | -74.000000 -44.485500 -24.311300 671 | 0 672 | 1000 673 | V 674 | 0.000000 675 | 400.000000 676 | 677 | 678 | 64 679 | BP 1 680 | 681 | 1 682 | 1000 683 | V 684 | 0.000000 685 | 400.000000 686 | 0.000000 687 | 0.000000 688 | 689 | 690 | 65 691 | BP 2 692 | 693 | 1 694 | 1000 695 | V 696 | 0.000000 697 | 400.000000 698 | 0.000000 699 | 0.000000 700 | 701 | 702 | 66 703 | BP 3 704 | 705 | 1 706 | 1000 707 | V 708 | 0.000000 709 | 400.000000 710 | 0.000000 711 | 0.000000 712 | 713 | 714 | 67 715 | BP 4 716 | 717 | 1 718 | 1000 719 | V 720 | 0.000000 721 | 400.000000 722 | 0.000000 723 | 0.000000 724 | 725 | 726 | 280 727 | Trigger 728 | 736 | 737 | -------------------------------------------------------------------------------- /permutation_importance.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/plain": [ 11 | "" 12 | ] 13 | }, 14 | "execution_count": 3, 15 | "metadata": {}, 16 | "output_type": "execute_result" 17 | } 18 | ], 19 | "source": [ 20 | "import numpy as np\n", 21 | "import pandas as pd\n", 22 | "from sklearn.model_selection import train_test_split\n", 23 | "from sklearn.preprocessing import StandardScaler\n", 24 | "import keras\n", 25 | "import sklearn\n", 26 | "from ctypes import *\n", 27 | "WinDLL('G:\\\\CUDA\\\\cudnn\\\\cuda\\\\bin\\\\cudnn_ops_infer64_8.dll')\n", 28 | "WinDLL('G:\\\\CUDA\\\\cudnn\\\\cuda\\\\bin\\\\cudnn_adv_infer64_8.dll')\n", 29 | "WinDLL('G:\\\\CUDA\\\\cudnn\\\\cuda\\\\bin\\\\cudnn_adv_train64_8.dll')" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 4, 35 | "metadata": {}, 36 | "outputs": [], 37 | "source": [ 38 | "eeg_df = pd.read_excel('eegdata.xlsx')\n", 39 | "ques_df = pd.read_excel('questionare.xlsx')\n", 40 | "ques_df = ques_df.loc[:,['sub','group','gender','age','外向性','宜人性','尽责性','神经质','开放性']]" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 5, 46 | "metadata": {}, 47 | "outputs": [], 48 | "source": [ 49 | "df_initial = pd.merge(eeg_df,ques_df,on=['sub'])\n", 50 | "#将分类变量转为0与1\n", 51 | "df_initial.replace('male',1,inplace=True)\n", 52 | "df_initial.replace('female',0,inplace=True)\n", 53 | "df_initial['group'].replace(1,0,inplace=True) #group为0的是被社会拒斥的 ##!!!!group实际上不应该出现在我的实验中,考虑删掉这个变量\n", 54 | "df_initial['group'].replace(2,1,inplace=True) #group为1的是未被社会拒斥的\n", 55 | "df_initial['con'].replace('neg',0,inplace=True)\n", 56 | "df_initial['con'].replace('pos',1,inplace=True)\n", 57 | "\n", 58 | "\n", 59 | "df_initial.drop(columns=['sub','group'],inplace=True)\n", 60 | "x = df_initial.drop(columns=['外向性','宜人性','尽责性','神经质','开放性'])\n", 61 | "x = pd.DataFrame(StandardScaler().fit_transform(x),columns=x.columns)\n", 62 | "\n", 63 | "y = df_initial.loc[:,['外向性','宜人性','尽责性','神经质','开放性']]" 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "execution_count": 6, 69 | "metadata": {}, 70 | "outputs": [ 71 | { 72 | "ename": "KeyboardInterrupt", 73 | "evalue": "", 74 | "output_type": "error", 75 | "traceback": [ 76 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 77 | "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", 78 | "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_4936/137572014.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mx_train\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mx_test\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0my_train\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0my_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtrain_test_split\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0my_temp\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtest_size\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.15\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mmodel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkeras\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodels\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_model\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'models\\\\'\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;34m'.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m \u001b[0mperm\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mPermutationImportance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscoring\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'neg_mean_squared_error'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_test\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 8\u001b[0m \u001b[0meli5\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshow_weights\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mperm\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeature_names\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mx_test\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtolist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 79 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\eli5\\sklearn\\permutation_importance.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y, groups, **fit_params)\u001b[0m\n\u001b[0;32m 202\u001b[0m \u001b[0msi\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_cv_scores_importances\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgroups\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mgroups\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 203\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 204\u001b[1;33m \u001b[0msi\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_non_cv_scores_importances\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 205\u001b[0m \u001b[0mscores\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msi\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 206\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscores_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mscores\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 80 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\eli5\\sklearn\\permutation_importance.py\u001b[0m in \u001b[0;36m_non_cv_scores_importances\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m 230\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_non_cv_scores_importances\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 231\u001b[0m \u001b[0mscore_func\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpartial\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscorer_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrapped_estimator_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 232\u001b[1;33m \u001b[0mbase_score\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mimportances\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_score_importances\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mscore_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 233\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mbase_score\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimportances\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mimportances\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 234\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", 81 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\eli5\\sklearn\\permutation_importance.py\u001b[0m in \u001b[0;36m_get_score_importances\u001b[1;34m(self, score_func, X, y)\u001b[0m\n\u001b[0;32m 234\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 235\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_get_score_importances\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscore_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 236\u001b[1;33m return get_score_importances(score_func, X, y, n_iter=self.n_iter,\n\u001b[0m\u001b[0;32m 237\u001b[0m random_state=self.rng_)\n\u001b[0;32m 238\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", 82 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\eli5\\permutation_importance.py\u001b[0m in \u001b[0;36mget_score_importances\u001b[1;34m(score_func, X, y, n_iter, columns_to_shuffle, random_state)\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[0mscores_decreases\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 88\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_iter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 89\u001b[1;33m scores_shuffled = _get_scores_shufled(\n\u001b[0m\u001b[0;32m 90\u001b[0m \u001b[0mscore_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns_to_shuffle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcolumns_to_shuffle\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 91\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrng\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 83 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\eli5\\permutation_importance.py\u001b[0m in \u001b[0;36m_get_scores_shufled\u001b[1;34m(score_func, X, y, columns_to_shuffle, random_state)\u001b[0m\n\u001b[0;32m 98\u001b[0m random_state=None):\n\u001b[0;32m 99\u001b[0m \u001b[0mXs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0miter_shuffled\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns_to_shuffle\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 100\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mscore_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_shuffled\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mX_shuffled\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mXs\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 84 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\eli5\\permutation_importance.py\u001b[0m in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 98\u001b[0m random_state=None):\n\u001b[0;32m 99\u001b[0m \u001b[0mXs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0miter_shuffled\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns_to_shuffle\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 100\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mscore_func\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX_shuffled\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mX_shuffled\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mXs\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 85 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\eli5\\sklearn\\permutation_importance.py\u001b[0m in \u001b[0;36mpd_scorer\u001b[1;34m(model, X, y)\u001b[0m\n\u001b[0;32m 160\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mpd_scorer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 161\u001b[0m \u001b[0mX\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mpd_columns\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 162\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mbase_scorer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 163\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mpd_scorer\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 164\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", 86 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\sklearn\\metrics\\_scorer.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, estimator, X, y_true, sample_weight)\u001b[0m\n\u001b[0;32m 214\u001b[0m \u001b[0mScore\u001b[0m \u001b[0mfunction\u001b[0m \u001b[0mapplied\u001b[0m \u001b[0mto\u001b[0m \u001b[0mprediction\u001b[0m \u001b[0mof\u001b[0m \u001b[0mestimator\u001b[0m \u001b[0mon\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 215\u001b[0m \"\"\"\n\u001b[1;32m--> 216\u001b[1;33m return self._score(\n\u001b[0m\u001b[0;32m 217\u001b[0m \u001b[0mpartial\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_cached_call\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 218\u001b[0m \u001b[0mestimator\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 87 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\sklearn\\metrics\\_scorer.py\u001b[0m in \u001b[0;36m_score\u001b[1;34m(self, method_caller, estimator, X, y_true, sample_weight)\u001b[0m\n\u001b[0;32m 256\u001b[0m \"\"\"\n\u001b[0;32m 257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 258\u001b[1;33m \u001b[0my_pred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmethod_caller\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mestimator\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"predict\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 259\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0msample_weight\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 260\u001b[0m return self._sign * self._score_func(\n", 88 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\sklearn\\metrics\\_scorer.py\u001b[0m in \u001b[0;36m_cached_call\u001b[1;34m(cache, estimator, method, *args, **kwargs)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[1;34m\"\"\"Call estimator with method and args and kwargs.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 67\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcache\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 68\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mestimator\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 69\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 70\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 89 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\keras\\utils\\traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 62\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 63\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 64\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 65\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# pylint: disable=broad-except\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 90 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\keras\\engine\\training.py\u001b[0m in \u001b[0;36mpredict\u001b[1;34m(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[0;32m 1783\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mon_predict_begin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1784\u001b[0m \u001b[0mbatch_outputs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1785\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0miterator\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menumerate_epochs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# Single epoch.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1786\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcatch_stop_iteration\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1787\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mstep\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 91 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\keras\\engine\\data_adapter.py\u001b[0m in \u001b[0;36menumerate_epochs\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1193\u001b[0m \u001b[1;34m\"\"\"Yields `(epoch, tf.data.Iterator)`.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1194\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_truncate_execution_to_epoch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1195\u001b[1;33m \u001b[0mdata_iterator\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0miter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_dataset\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1196\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mepoch\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_initial_epoch\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_epochs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1197\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_insufficient_data\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# Set by `catch_stop_iteration`.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 92 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\tensorflow\\python\\data\\ops\\dataset_ops.py\u001b[0m in \u001b[0;36m__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 488\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcontext\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecuting_eagerly\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minside_function\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 489\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolocate_with\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_variant_tensor\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 490\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0miterator_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mOwnedIterator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 491\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 492\u001b[0m raise RuntimeError(\"`tf.data.Dataset` only supports Python-style \"\n", 93 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\tensorflow\\python\\data\\ops\\iterator_ops.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, dataset, components, element_spec)\u001b[0m\n\u001b[0;32m 724\u001b[0m \u001b[1;34m\"When `dataset` is provided, `element_spec` and `components` must \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 725\u001b[0m \"not be specified.\")\n\u001b[1;32m--> 726\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_create_iterator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 727\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 728\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_next_call_count\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 94 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\tensorflow\\python\\data\\ops\\iterator_ops.py\u001b[0m in \u001b[0;36m_create_iterator\u001b[1;34m(self, dataset)\u001b[0m\n\u001b[0;32m 749\u001b[0m \u001b[0moutput_types\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_flat_output_types\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 750\u001b[0m output_shapes=self._flat_output_shapes))\n\u001b[1;32m--> 751\u001b[1;33m \u001b[0mgen_dataset_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmake_iterator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mds_variant\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_iterator_resource\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 752\u001b[0m \u001b[1;31m# Delete the resource when this object is deleted\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 753\u001b[0m self._resource_deleter = IteratorResourceDeleter(\n", 95 | "\u001b[1;32mF:\\pythonenv\\dl\\lib\\site-packages\\tensorflow\\python\\ops\\gen_dataset_ops.py\u001b[0m in \u001b[0;36mmake_iterator\u001b[1;34m(dataset, iterator, name)\u001b[0m\n\u001b[0;32m 3234\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mtld\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_eager\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3235\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3236\u001b[1;33m _result = pywrap_tfe.TFE_Py_FastPathExecute(\n\u001b[0m\u001b[0;32m 3237\u001b[0m _ctx, \"MakeIterator\", name, dataset, iterator)\n\u001b[0;32m 3238\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_result\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 96 | "\u001b[1;31mKeyboardInterrupt\u001b[0m: " 97 | ] 98 | } 99 | ], 100 | "source": [ 101 | "import eli5\n", 102 | "from eli5.sklearn import PermutationImportance\n", 103 | "i='外向性'\n", 104 | "y_temp = y.loc[:,[i]]\n", 105 | "x_train,x_test,y_train,y_test = train_test_split(x,y_temp,test_size=0.15,random_state=1)\n", 106 | "model = keras.models.load_model('models\\\\'+i+'.h5')\n", 107 | "perm = PermutationImportance(model, scoring='neg_mean_squared_error',random_state=1).fit(x_test, y_test)\n", 108 | "eli5.show_weights(perm, feature_names = x_test.columns.tolist())\n" 109 | ] 110 | } 111 | ], 112 | "metadata": { 113 | "interpreter": { 114 | "hash": "fb662769bf5854fc00024041705291ada44874f0671c421db64edbd11228109f" 115 | }, 116 | "kernelspec": { 117 | "display_name": "Python 3.8.8 ('dl')", 118 | "language": "python", 119 | "name": "python3" 120 | }, 121 | "language_info": { 122 | "codemirror_mode": { 123 | "name": "ipython", 124 | "version": 3 125 | }, 126 | "file_extension": ".py", 127 | "mimetype": "text/x-python", 128 | "name": "python", 129 | "nbconvert_exporter": "python", 130 | "pygments_lexer": "ipython3", 131 | "version": "3.8.8" 132 | }, 133 | "orig_nbformat": 4 134 | }, 135 | "nbformat": 4, 136 | "nbformat_minor": 2 137 | } 138 | --------------------------------------------------------------------------------