前面学习完带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

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

被折叠的 条评论
为什么被折叠?



