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

97f8332581841a50a036c5407945a431.png

这是使用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')

b8984ebd6be82cd84f009614a64a59cf.png

"""
利用 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)

d9aa59adea3a3cfce87e1ac811f366e2.png

# 查看其形状
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

d84449a32df6e08902bf01bcf75b985a.png

conditions = behavioral['labels']
print(conditions

99c4be5890d2049a54a0e6e7024ae842.png


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

41d152595962086844e0dcbfd9041450.png

"""
训练数据
训练集:fmri_masked
标签为:conditions
"""
svc.fit(fmri_masked, conditions)
"""
预测数据
对fmri_masked数据进行预测,
得到其对应的标签
"""
prediction = svc.predict(fmri_masked)
print(prediction)

d487051080e03ecd5069cd647c3a8c74.png


e58fc0eb64210bdf486c5379d26edf7e.png

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

若有侵权及疑问,请后台留言,管理员即时删侵!

893a5317c64301bf3e6c56ce9bd91c69.png

更多阅读

美国“脑计划”取得重大进展,从小鼠到猴子再到人类

深圳大学梁臻博士提出EEGFuseNet高维脑电图

混合无监督深度特征表征与融合模型及其在情绪识别中的应用

用于情绪识别的生物信号数据集汇总

临港实验室、上海脑科学与类脑研究中心 脑机接口平台联合招聘公告

a930199233941a78084d1d623f9b53a3.png

28871ee4c77a565d7cb9252a8a3e2677.png

你的每一次在看,我都很在意!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑机接口社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值