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)
文章仅用于学术交流,不用于商业行为,
若有侵权及疑问,请后台留言,管理员即时删侵!
更多阅读
美国“脑计划”取得重大进展,从小鼠到猴子再到人类
深圳大学梁臻博士提出EEGFuseNet高维脑电图
混合无监督深度特征表征与融合模型及其在情绪识别中的应用
用于情绪识别的生物信号数据集汇总
临港实验室、上海脑科学与类脑研究中心 脑机接口平台联合招聘公告
你的每一次在看,我都很在意!
Nilearn教程系列(4)-fMRI解码入门教程(一)相关推荐
- Typescript系列(一):TS入门教程之简介、安装、编译、监听
一个比java更script的语言,它是js的超集,它是Typescript. 一.typescript是什么? Typescript是javascript的一个超集,主要提供了类型系统和对ES6的支 ...
- Microchip PIC系列8位单片机入门教程(一)开发环境建立
Microchip PIC系列8位单片机入门教程(一)开发环境建立 作者:Greg 第一节 开发环境建立条件 软件: (1)MPLAB X:集成开发环境下载地址:https://www.microch ...
- Microchip PIC系列8位单片机入门教程(四)中断
Microchip PIC系列8位单片机入门教程(三) 第一节 知识点 (1)中断 PIC18F2420/2520/4420/4520 器件提供多个中断源及一个中断优先级功能,可以给大多数中断源分配高 ...
- MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排
本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:156204968@qq.com. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于 ...
- zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...
作者:Commanderfranz,编译: kenshin 通过前面两篇文章我们不仅创建的自定义IP模块还移植了Linux操作系统,今天这篇文章的内容是将这两部分联系起来,其实我们创建的myLed I ...
- 转g代码教程_图深度学习入门教程(九)——图滤波神经网络模型
本教程是一个系列免费教程,争取每月更新2到4篇.(由于精力有限,近期停止了一段时间,在此向大家道个歉). 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神经网络等相关 ...
- matlab 7.1教程pdf,MATLAB7[1].0入门教程.ppt
<MATLAB7[1].0入门教程.ppt>由会员分享,可在线阅读,更多相关<MATLAB7[1].0入门教程.ppt(34页珍藏版)>请在人人文库网上搜索. 1.1/33,2 ...
- flex+android+教程,android开发flex4.5入门教程.pdf
android开发flex4.5入门教程 中国矿业大学教务部 教务通知(2013 )第33 号 关于做好各级"大学生创新训练计划" 项目中期检查和结题验收的通知 各学院: 为加强我 ...
- python入门教程非常详细-Python编程入门教程:从入门到高级,非常详细
本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...
最新文章
- R构建朴素贝叶斯分类器(Naive Bayes Classifier)
- Java8 Optional 最佳实践
- pandas的自带数据集_盘点 | Python自带的那些数据集
- sturts2标签判断多个条件
- 网站留言板防重复留言_2020微信公众号怎么开通原创、赞赏、留言功能?【5月更新】...
- python span镶嵌匹配_python模式匹配,提取指定字段
- 现在输入 n 个数字, 以逗号, 分开; 然后可选择升或者 降序排序;
- webservice 实现通知支付结果到OA
- Pandas速查手册中文版
- 大数据爬虫的一些小目标
- 联想官方出品小工具:关闭或开启 Win10 系统自动更新
- unity3d UI粒子特效裁剪
- 欧22转债,永02转债上市价格预测
- Pancake的IFO解读
- 2018 再见,你好 2019
- 实验吧——天网管理系统
- 华为P30销量破千万有多少含金量?
- Linux系统根目录详解
- Linux | 可重入函数 | volatile | SIGCHLD信号
- 服务器系统迁移工具,Win2008 R2迁移实战之迁移工具使用
热门文章
- curl: (7) couldn‘t connect to host 解决方法
- 问题解决笔记,Restarting network (via systemctl):: Job for network.service failed. ...
- 如何从值获取C#枚举描述? [重复]
- Java相当于C#中的#region
- 如何编辑Subversion中已提交的日志消息?
- 做为前端开发者,你应该要懂的 http协议
- 云计算物联网Hold住未来十大技术趋势
- linux下软件安装与yum源码库的设置
- Winform 绘制圆形的图片
- [考试]20151013搜索