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

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

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

更多阅读

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

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

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

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

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

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

Nilearn教程系列(4)-fMRI解码入门教程(一)相关推荐

  1. Typescript系列(一):TS入门教程之简介、安装、编译、监听

    一个比java更script的语言,它是js的超集,它是Typescript. 一.typescript是什么? Typescript是javascript的一个超集,主要提供了类型系统和对ES6的支 ...

  2. Microchip PIC系列8位单片机入门教程(一)开发环境建立

    Microchip PIC系列8位单片机入门教程(一)开发环境建立 作者:Greg 第一节 开发环境建立条件 软件: (1)MPLAB X:集成开发环境下载地址:https://www.microch ...

  3. Microchip PIC系列8位单片机入门教程(四)中断

    Microchip PIC系列8位单片机入门教程(三) 第一节 知识点 (1)中断 PIC18F2420/2520/4420/4520 器件提供多个中断源及一个中断优先级功能,可以给大多数中断源分配高 ...

  4. MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排

    本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:156204968@qq.com. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于 ...

  5. zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...

    作者:Commanderfranz,编译: kenshin 通过前面两篇文章我们不仅创建的自定义IP模块还移植了Linux操作系统,今天这篇文章的内容是将这两部分联系起来,其实我们创建的myLed I ...

  6. 转g代码教程_图深度学习入门教程(九)——图滤波神经网络模型

    本教程是一个系列免费教程,争取每月更新2到4篇.(由于精力有限,近期停止了一段时间,在此向大家道个歉). 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神经网络等相关 ...

  7. matlab 7.1教程pdf,MATLAB7[1].0入门教程.ppt

    <MATLAB7[1].0入门教程.ppt>由会员分享,可在线阅读,更多相关<MATLAB7[1].0入门教程.ppt(34页珍藏版)>请在人人文库网上搜索. 1.1/33,2 ...

  8. flex+android+教程,android开发flex4.5入门教程.pdf

    android开发flex4.5入门教程 中国矿业大学教务部 教务通知(2013 )第33 号 关于做好各级"大学生创新训练计划" 项目中期检查和结题验收的通知 各学院: 为加强我 ...

  9. python入门教程非常详细-Python编程入门教程:从入门到高级,非常详细

    本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...

最新文章

  1. R构建朴素贝叶斯分类器(Naive Bayes Classifier)
  2. Java8 Optional 最佳实践
  3. pandas的自带数据集_盘点 | Python自带的那些数据集
  4. sturts2标签判断多个条件
  5. 网站留言板防重复留言_2020微信公众号怎么开通原创、赞赏、留言功能?【5月更新】...
  6. python span镶嵌匹配_python模式匹配,提取指定字段
  7. 现在输入 n 个数字, 以逗号, 分开; 然后可选择升或者 降序排序;
  8. webservice 实现通知支付结果到OA
  9. Pandas速查手册中文版
  10. 大数据爬虫的一些小目标
  11. 联想官方出品小工具:关闭或开启 Win10 系统自动更新
  12. unity3d UI粒子特效裁剪
  13. 欧22转债,永02转债上市价格预测
  14. Pancake的IFO解读
  15. 2018 再见,你好 2019
  16. 实验吧——天网管理系统
  17. 华为P30销量破千万有多少含金量?
  18. Linux系统根目录详解
  19. Linux | 可重入函数 | volatile | SIGCHLD信号
  20. 服务器系统迁移工具,Win2008 R2迁移实战之迁移工具使用

热门文章

  1. curl: (7) couldn‘t connect to host 解决方法
  2. 问题解决笔记,Restarting network (via systemctl):: Job for network.service failed. ...
  3. 如何从值获取C#枚举描述? [重复]
  4. Java相当于C#中的#region
  5. 如何编辑Subversion中已提交的日志消息?
  6. 做为前端开发者,你应该要懂的 http协议
  7. 云计算物联网Hold住未来十大技术趋势
  8. linux下软件安装与yum源码库的设置
  9. Winform 绘制圆形的图片
  10. [考试]20151013搜索