Nilearn教程系列(4)-fMRI解码入门教程(一)

这是使用Nilearn解码的教程,它以Haxby 2001研究中猫辨别任务的数据为基础。

fMRI解码入门教程

功能性磁共振成像(FMRI,functional magnetic resonance imaging)是一种新兴的神经影像学方式,其原理是利用磁振造影来测量神经元活动所引发之血液动力的改变。由于fMRI的非侵入性、没有辐射暴露问题与其较为广泛的应用,从1990年代开始就在脑部功能定位领域占有一席之地。目前主要是运用在研究人及动物的脑或脊髓。

主要内容包括:

1.从Haxby研究中检索并加载fMRI数据

2.利用SVM解码

3.使用交叉验证测量预测分数

4.检查模型权重

1

下载数据

from nilearn import datasets
import warnings
warnings.filterwarnings("ignore")
"""
调用fetch_haxby()下载Haxby研究数据集,
如果数据集已经存在本地了,就直接加载本地的,
否则会从网上下载
"""
haxby_dataset = datasets.fetch_haxby()
#由于数据集有很多组,我们只是用其中一组
fmri_filename = haxby_dataset.func[0]
# 打印数据集的基本信息
print('First subject functional nifti images (4D) are at: %s' %
      fmri_filename)  # 4D data
2

将fMRI数据转换为数据矩阵

"""
以受检者的解剖图像为背景对其进行可视化
"""
mask_filename = haxby_dataset.mask_vt[0]
from nilearn import plotting
plotting.plot_roi(mask_filename, bg_img=haxby_dataset.anat[0],
                 cmap='Paired')
"""
利用 nilearn.input_data.NiftiMasker来提取mask上的fMRI数据,
并将其转换为数据序列
"""
from nilearn.input_data import NiftiMasker
masker = NiftiMasker(mask_img=mask_filename, standardize=True)

# 根据 filename检索二维数据
fmri_masked = masker.fit_transform(fmri_filename)

# 打印frmi_masked
print(fmri_masked)

# 查看其形状
print(fmri_masked.shape)

(1452, 464)

3

加载行为标签

行为标签存储在csv文件中,用空格分隔,这里用pandas将其排列成一个数组

import pandas as pd
# 加载行为信息
behavioral = pd.read_csv(haxby_dataset.session_target[0], sep=" ")
print(behavioral
conditions = behavioral['labels']
print(conditions
4

只对猫和面孔脸部进行分析

根据上面的labels可以看出,有多种条件,本次实验只需猫和脸部的数据

"""
只需要face和cat数据
"""
condition_mask = conditions.isin(['face', 'cat'])

fmri_masked = fmri_masked[condition_mask]
# 打印其形状
print(fmri_masked.shape)

(216, 464)

conditions = conditions[condition_mask]
print(conditions.shape

(216,)

5

利用SVM进行解码

我们使用scikit-learn机器学习工具对fmri_masked数据进行分析。

这里使用线性核的支持向量机分类器。

"""
创建线性核的SVM
"""
from sklearn.svm import SVC
svc = SVC(kernel='linear')
print(svc
"""
训练数据
训练集:fmri_masked
标签为:conditions
"""
svc.fit(fmri_masked, conditions)
"""
预测数据
对fmri_masked数据进行预测,
得到其对应的标签
"""
prediction = svc.predict(fmri_masked)
print(prediction)

文章仅用于学术交流,不用于商业行为,

(0)

相关推荐