Nilearn汇总之我的理解(一文通览Nilearn绝大部分功能)

本文详细介绍fMRI数据分析流程,包括入门教程、anova-SVM预测、FREM及SpaceNet等方法的应用。涵盖从数据预处理到模型训练、性能评估及权重可视化的全过程。

前面学习完带ROI的mask的预测(入门教程),以及group mask的预测(anova-SVM),把这些前置内容融汇贯通后,就可以开始看我下面的个人理解了。

首先回顾下前面的内容:

对于机器学习的基础:机器学习,说白了,就是用模型去拟合X和Y。作为医学生,我们没必要去弄明白这些模型内部的实现原理,只需要记住分类和回归中,最经典的几个模型,反正有skitlearn,API全部统一太方便了。因此,机器学习就是沟通X和Y的桥梁,这么去理解。Y好说,要么是离散数据,比如脸、猫,用来分类;要么是连续数据,比如1,2,3…,用来回归。重点来了,那么X是啥?在skitlearn里,X就是二维数据,列标签代表特征值,行标签代表样本(可以理解为每一个病人)。所以在skitlearn里,X就是二维,Y是一维(序列)。
Nilearn包,操作起来简单,它的实现原理其实很简单:核磁是三维数据,加上时间点就是四维数据,所以func数据就是四维的。要把它拿去机器学习,怎么办呢?很简单,就是降维!那么降维怎么实现的呢?看看下面,我结合具体例子解释。(仅供医学生去理解,统计学同学请忽略这篇文章)
降维有2种方法:
第一种是把体素,还有时间点作为特征值,(体素1,体素2,体素…10000)数据量很大,还好numpy对于矩阵处理非常棒。这种方法用于多个samples(这里的samples就是我们实验中的受试者)。
第二种是把体素作为sample,(体素1,体素2…体素10000),时间点作为特征值。这种方法用于单个受试者,但是需要这个受试者在实验中进行任务态功能核磁的重复刺激。

第一章 MVPA

MVPA :multi-variate pattern analysis 多变量模式分析
对于入门教程:

# 1.导入数据
bold_file = bold.nii.gz
mask_roi_file = mask_roi.nii.gz
anatomical_file = anatomical.nii.gz
labels = labels.txt
condition_mask = labels.isin(['face', 'cat'])
# 2.数据预处理
#=== 去除不相干时间点 ###
#=== 如果实验中没有不相干时间点,就不用这步 ###
from nilearn.image import index_img
bold_prepared = index_img(fmri_filename, condition_mask)
# 3.分成训练集和测试集
# 4.设置评估器 evaluator
from nilearn.decoding import Decoder
decoder = Decoder(
    estimator='svc', mask=mask_roi_file,
    standardize=True, cv=5,
    scoring='accuracy'
)
# 5.拟合数据,同时进行交叉验证
decoder.fit(bold_prepared, labels)
pri
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

clancy_wu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值