Nilearn学习笔记4- 连接提取:用于直接连接的协方差

概要:给定一组时间序列(例如通过上篇博客中提到的方法在一群人的fmri数据中提取的时间序列集),功能连接组是表示不同的大脑区域之间的相互作用的连接。今天分享的是利用稀疏逆协方差去获取功能连接组,重点放在脑区之间的直接连接。 1. 用于功能连接组的稀疏逆协方差 静息状态功能连接可以通过估测不同脑区之间的信号的协方差(或者相关性)矩阵的方法得到,相同的信息可以表示为赋权图,图的节点是不同的脑区,边的权重代表协方差(高斯图形模型)。协方差矩阵的系数反应的是直接或者间接连接,如果协方差矩阵来自非常稠密的脑连接组,所以很难提取出两个脑区之间的直接连接。 现在更多的研究者对使用逆协方差矩(精度矩阵)阵更感兴趣,它只能给出脑区之间的直接连接,因为它只包含局部的协方差。 为了很好的得到脑区之间的结构连接,构建一个稀疏逆协方差估计器是很有必要的。应用在scikit-learn库中的GraphLasso估计器就是很好的选择。 代码:

from fatchData import FatchData

fMRIData = FatchData(r'E:\home\fMRIData_973\NC_01_0001\rs6_f8dGR_w3_rabrat_4D.nii')
TimeSeries = fMRIData.GetTimeSeries('altas').TimeSeries
RegionLabels = fMRIData.GetTimeSeries('altas').Labels
Atlas = fMRIData.GetTimeSeries('altas').Atlas
print(TimeSeries.shape)
print(RegionLabels)

from sklearn.covariance import GraphLassoCV

Estimator = GraphLassoCV()
Estimator.fit(TimeSeries)
Estimator.precision_
# Display the correlation matrix
import numpy as np
from matplotlib import pyplot as plt
plt.figure(figsize=(10, 10))
# Mask out the major diagonal
np.fill_diagonal(Estimator.precision_, 0)
plt.imshow(Estimator.precision_, interpolation="nearest", cmap="RdBu_r",
           vmax=0.8, vmin=-0.8)
plt.colorbar()
# And display the RegionLabels
x_ticks = plt.xticks(range(len(RegionLabels)), RegionLabels, rotation=90)
y_ticks = plt.yticks(range(len(RegionLabels)), RegionLabels)

############################################################################
# And now display the corresponding graph
from nilearn import plotting
coords = Atlas

# We threshold to keep only the 20% of edges with the highest value
# because the graph is very dense
plotting.plot_connectome(Estimator.precision_, coords,
                         edge_threshold="80%", colorbar=True)

plotting.show()

运行结果: (1)利用精度矩阵(协方差逆矩阵)得到的结果:

(2)利用协方差矩阵得到的结果:

对比两个图像可以发现,利用精度矩阵得到的连接更少.

3.2 群体层面的稀疏逆协方差 为了能够提取群体被试的稀疏逆协方差矩阵,我们可能更关心多个连接组中的一个,不同的被试的稀疏逆协方差矩阵的结构一样,但是连接值不一样。 对于这个问题,nilearn提供了群体估计器:nilearn.connectome.GroupSparseCovarianceCV estimator. 它的用法如下:

Estimator =nilearn.connectome.GroupSparseCovarianceCV
Estimator.fit([timeseries1,timeseries2,…])

估计器的输入参数是每个被试的时间序列(在1中已得到)的列表,计算结束后估计器为每个时间序列得到一个协方差矩阵和精度矩阵,例如第一个时间序列对应的稀疏协方差矩阵和稀疏逆协方差矩阵:

estimator.covariances_[0]  
estimator.precisions_[0]

现在更多的焦点放在多被试的群体数据分析,在实际应用中,在对连接矩阵系数进行统计学分析的时候遇到的挑战是系数的数量随着脑区数量的增长而增多,导致对多个比较的校正对统计效率造成负担。 这种情况下,使用 GroupSparseCovariance作为估计器并且设置很高的alpha值,这种玄真人将会对每个被试者的精度矩阵执行更强的稀疏性,由于稀疏度对于每个被试都是常见的,因此可以仅对非零系数进行群体分析。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法原理与实践

文本主题模型之LDA(一) LDA基础

    在前面我们讲到了基于矩阵分解的LSI和NMF主题模型,这里我们开始讨论被广泛使用的主题模型:隐含狄利克雷分布(Latent Dirichlet Allo...

1152
来自专栏鸿的学习笔记

写给开发者的机器学习指南(二)

在机器学习领域有两种主要的学习方式,即监督学习和无监督学习。当您想在您的应用程序中使用机器学习时,需要简要说明下,因为选择正确的机器学习方法和算法是一个重要但有...

962
来自专栏深度学习思考者

Vehicle Logo Recognition System Based on Convolutional Neural Networks With a Pretraining Strategy

论文笔记Ⅰ 基于卷积神经网络的车辆标记识别系统 考虑文章中一些语法以及用词还挺好,先记录一下,留下来以后可能用到自己的paper中。 Abstract 由...

2388
来自专栏数据派THU

深度学习中的正则化技术(附Python代码)

本文简单介绍了什么是正则化以及在深度学习任务中可以采用哪些正则化技术,并以keras代码具体讲解了一个案例。

2045
来自专栏AI科技大本营的专栏

Fast.ai深度学习实战课程 Lesson7 学习笔记:CNN Architectures

本篇是AI100学院此前重点推出的《Fast.ai 深度学习实战课程》(中文字幕)第七节的学习笔记,分享者胡智豪。 如果你对深度学习感兴趣,该系列课程千万不...

4456
来自专栏算法channel

数据降维处理:PCA之特征值分解法例子解析

请点击上面公众号,免费订阅。 《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,...

2977
来自专栏IT派

入门 | 深度学习模型的简单优化技巧

以下是我与同事和学生就如何优化深度模型进行的对话、消息和辩论的摘要。如果你发现了有影响力的技巧,请分享。

792
来自专栏卢欣的专栏

Randomized SVD 算法介绍与实现

文本介绍一种Randomized SVD算法,相比于SVD,它更能适应大型矩阵分解的要求,且速度更快。

1.2K1
来自专栏blog.csdn.net/LHWorld

【机器学习】--LDA初始和应用

LDA是一种 非监督机器学习 技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(b...

1023
来自专栏北京马哥教育

用Python实现极大似然估计

极大似然估计(Maximum likelihood estimation, 简称MLE)是很常用的参数估计方法,极大似然原理的直观想法是,一个随机试验如有若干个...

4743

扫码关注云+社区