コード例 #1
0
     if (epoch_type == 'Probe') & ('target' in analysis):
         sel = np.where((events['Change'] == 1) & (~np.isnan(y)))[0]
     else:
         sel = np.where(~np.isnan(y))[0]
 td = SlidingEstimator(clf,
                       scoring=make_scorer(scorer),
                       n_jobs=24,
                       **kwargs)
 # run decoding
 cv = StratifiedKFold(8)
 scores = list()
 patterns = list()
 filters = list()
 for train, test in cv.split(X[sel], y[sel]):
     td.fit(X[sel][train], y[sel][train])
     score = td.score(X[sel][test], y[sel][test])
     scores.append(score)
     patterns.append(get_coef(td, 'patterns_', inverse_transform=True))
     filters.append(get_coef(td, 'filters_', inverse_transform=True))
 scores = np.mean(scores, axis=0)
 patterns = np.mean(patterns, axis=0)
 filters = np.mean(filters, axis=0)
 if 'angle' in analysis:
     patterns = np.mean(np.abs(patterns), axis=1)
     filters = np.mean(np.abs(filters), axis=1)
 scores = np.reshape(scores, (n_freqs, n_times))
 patterns = np.reshape(patterns, (n_channels, n_freqs, n_times))
 filters = np.reshape(filters, (n_channels, n_freqs, n_times))
 # save cross-validated scores
 fname = results_folder +\
     '%s_tf_scores_%s_%s.npy' % (subject, epoch_type, analysis)
 sel = np.where(y != 0)[0]
 le = LabelEncoder()
 le.fit(y_con)
 y_con = le.transform(y_con)
 sel_con = np.where(y_con != 0)[0]
 # Define estimators depending on the analysis
 clf = make_pipeline(StandardScaler(), LinearModel(LogisticRegression()))
 kwargs = dict()
 est = SlidingEstimator(clf, scoring='roc_auc', n_jobs=24, **kwargs)
 # Run decoding
 cv = StratifiedKFold(12)
 scores = list()
 scores_con = list()
 for train, test in cv.split(X[sel], y[sel]):
     est.fit(X[sel][train], y[sel][train])  # train during WM task
     score = est.score(X[sel][test], y[sel][test])  # test during WM task
     score_con = est.score(X_con[sel_con],
                           y_con[sel_con])  # test during control task
     scores.append(score)
     scores_con.append(score_con)
 scores = np.mean(scores, axis=0)
 scores = np.reshape(scores, (n_freqs, n_times))
 scores_con = np.mean(scores_con, axis=0)
 scores_con = np.reshape(scores_con, (n_freqs, n_times))
 # save cross-validated scores
 fname = results_folder +\
     '%s_scores_tf_%s.npy' % (subject, analysis)
 np.save(fname, np.array(scores))
 fname = results_folder +\
     '%s_scores_tf_%s_con.npy' % (subject, analysis)
 np.save(fname, np.array(scores_con))