Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学

news2024/9/28 11:16:12

🎯要点

  1. 统计观测值之间距离计算
  2. 代谢组学和脂质组学分析
  3. 相关距离矩阵计算
  4. 卡方检验偏差校正
  5. 快速计算距离协方差算法
  6. 大规模生物系统分析
  7. 距离矩阵相关性测试
  8. 石油勘探统计学关系
    在这里插入图片描述

Python距离矩阵

在数学、计算机科学,尤其是图论中,距离矩阵是一个方阵(二维数组),其中包含一组元素之间成对的距离。根据所涉及的应用,用于定义此矩阵的距离可能是也可能不是度量。如果有 N 个元素,则此矩阵的大小为 N×N。在图论应用中,元素通常被称为点、节点或顶点。

一般来说,距离矩阵是某个图的加权邻接矩阵。在网络(即为弧分配权重的有向图)中,网络两个节点之间的距离可以定义为连接两个节点的最短路径上权重之和的最小值(其中路径中的步数是有界的)。[2] 这个距离函数虽然定义明确,但不是度量。除了需要能够组合和比较权重之外,不需要对权重进行任何限制,因此在某些应用中会使用负权重。由于路径是有向的,因此无法保证对称性,并且如果存在负权重循环,距离矩阵可能不是空心的(并且如果没有对步数的限制,矩阵可能未定义)。

上述的代数公式可以通过使用最小加代数来获得。该系统中的矩阵乘法定义如下:给定两个 n × n n \times n n×n 矩阵 A = ( a i j ) A=\left(a_{i j}\right) A=(aij) B = ( b i j ) B=\left(b_{i j}\right) B=(bij),它们距离积 C = ( c i j ) = A ⋆ B C=\left(c_{i j}\right)=A \star B C=(cij)=AB 定义为 n × n n \times n n×n 矩阵,使得
c i j = min ⁡ k = 1 n { a i k + b k j } c_{i j}=\min _{k=1}^n\left\{a_{i k}+b_{k j}\right\} cij=k=1minn{aik+bkj}
请注意,非直接连接的对角线元素需要设置为无穷大或合适的大值,以使 min-plus 操作正常工作。这些位置的零将被错误地解释为没有距离、成本等的边。

Python示例说明如何对距离矩阵进行排序,以便最终(分层)集群是明显的。

import numpy as np
from scipy.spatial.distance import pdist, squareform
from sklearn import datasets
import matplotlib.pyplot as plt

iris = datasets.load_iris()
iris.data.shape
(150, 4)

该数据集包含 R^4 中的 150 个点(由 4 个特征描述的 150 朵花)。使用 pdist 我们可以计算一个 150 x 150 的距离矩阵,如下所示。

dist_mat = squareform(pdist(iris.data))

N = len(iris.data)
plt.pcolormesh(dist_mat)
plt.colorbar()
plt.xlim([0,N])
plt.ylim([0,N])
plt.show()

我们可以看到有 3 个明显的簇:一个相当密集(左下)并且距离其他两个簇很远,另外两个非常接近,但与第三个簇(左下)的距离不同。

这些聚类对应于可以在 iris.target 中找到的 3 个类:一个是线性可分的(下面的 0 类,对应于距离矩阵中左下方的聚类),另外两个不是线性可分的(类 1 和 2,对应于最右边的两个聚类)。

iris.target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

为了展示所提出的相异矩阵排序方法的有用性,我们对数据点应用随机排列。这是相关的,因为数据点通常以任意顺序提供并且通常没有任何标签。

X = iris.data[np.random.permutation(N),:]

dist_mat = squareform(pdist(X))

plt.pcolormesh(dist_mat)
plt.xlim([0,N])
plt.ylim([0,N])
plt.show()

在该过程结束时,所有点都根据树状图施加的顺序进行排序。

def seriation(Z,N,cur_index):

    if cur_index < N:
        return [cur_index]
    else:
        left = int(Z[cur_index-N,0])
        right = int(Z[cur_index-N,1])
        return (seriation(Z,N,left) + seriation(Z,N,right))
    
def compute_serial_matrix(dist_mat,method="ward"):

    N = len(dist_mat)
    flat_dist_mat = squareform(dist_mat)
    res_linkage = linkage(flat_dist_mat, method=method,preserve_input=True)
    res_order = seriation(res_linkage, N, N + N-2)
    seriated_dist = np.zeros((N,N))
    a,b = np.triu_indices(N,k=1)
    seriated_dist[a,b] = dist_mat[ [res_order[i] for i in a], [res_order[j] for j in b]]
    seriated_dist[b,a] = seriated_dist[a,b]
    
    return seriated_dist, res_order, res_linkage

👉更新:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2168618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

02-Mybatis基础操作

1. Mybatis基础操作 1.1 需求 需求说明&#xff1a; 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求&#xff0c;完成员工管理的需求开发 通过分析以上的页面原型和需求&#xff0c;我们确定了功能列表&#xff1a; 查询 根据主键ID查询条件查询 新增更新删除 根…

FreeRTOS(四)FreeRTOS列表与列表项

目录 列表 列表项 迷你列表项 列表和列表项的关系 列表相关API函数 列表初始化 列表项初始化 列表项插入 列表项末尾插入 列表项删除 列表遍历 在 FreeRTOS 中&#xff0c;列表&#xff08;List&#xff09;和列表项&#xff08;ListItem&#xff09;是核心数据结构&…

如何防止订单重复

如何防止订单重复 在整个下单流程中&#xff0c;哪里重复操作影响最大&#xff1f;确认订单只是修改订单状态从未支付改为待支付而已&#xff0c;不会对我们的主要业务产生影响&#xff0c;而在支付的时候&#xff0c;主要由第三方平台&#xff0c;我们也可以不用管&#xff0c…

记一次Windows状态栏不显示问题

文章目录 &#x1fa9f;解决方案☁️单次处理☁️有效处理 &#x1fa9f;现象&#x1fa9f;尝试的操作⭐END&#x1f31f;跋&#x1f31f;交流方式 &#x1fa9f;解决方案 ☁️单次处理 重启explorer.exe 命令行操作 注意&#xff0c;使用命令行操作的时候&#xff0c;出现…

Cocos 3.8.3 实现外描边效果(逃课玩法)

本来想着用Cocos 的Shader Graph照搬Unity的思路来加外描边&#xff0c;发现不行&#xff0c;然后我就想弄两个物体不就行了吗&#xff0c;一个是放大的版本&#xff0c;再放大的版本上加一个材质&#xff0c;这个材质面剔除选择前面的面剔除就行了&#xff0c;果不其然还真行。…

字幕制作软件有哪些?整理了适合新手的5个方法,快速导出srt字幕文件!

字幕制作软件有哪些&#xff1f;平时创作视频作品时&#xff0c;大部分会用到字幕。毕竟字幕是视频中不可或缺的一部分&#xff0c;字幕文件在传达视频内容上达到了重要的作用。 常见的字幕文件有srt、ass和sub格式。市面上比较常用的是srt字幕格式&#xff0c;这种格式几乎适用…

滑动窗口 -- 限制窗口内某元素的数量/种类

目录 长度最小的数组 题解&#xff1a; 将x减到0的最小操作数 题解&#xff1a; 最大连续1的个数 题解&#xff1a; 无重复字符的最长子串&#xff08;限制数量&#xff09; 题解&#xff1a; 水果成篮&#xff08;限制种类&#xff09; 题解&#xff1a; 找到字符串中…

Skywalking告警配置

背景 skywalking 9.7.0&#xff0c;地址&#xff1a;Backend setup | Apache SkyWalking helm&#xff1a;skywalking-helm:4.5.0&#xff0c;地址&#xff1a;skywalking-helm/chart/skywalking/values.yaml at v4.5.0 首先来说一下为什么使用skywalking告警&#xff1f; …

[半导体检测-6]:为什么晶圆缺陷检测精度越高,所需要的光源的波长越短?

目录 前言&#xff1a; 1. 光束的聚焦能力 1.1 概述 1.2 光束的聚焦能力用什么指标来标识&#xff1f; 1. 光束质量因子&#xff08;M因子&#xff09; 2. 衍射极限倍数&#xff08;β因子&#xff09; 3. 斯特列尔比&#xff08;Strehl Ratio&#xff09; 4. 远场发散…

Spring6梳理13——依赖注入之引入集合Bean属性

以上笔记来源&#xff1a; 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09;https://www.bilibili.com/video/BV1kR4y1b7Qc 13 依赖注入之引入集合Bean属性 13.1 创建Lesson类&#xff0c;student类和teacher实体类…

【LeetCode:2535. 数组元素和与数字和的绝对差 + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

jmeter性能测试---csv数据文件设置

&#xff08;1&#xff09;什么时候使用CSV数据文件设置&#xff1f; 当不同的用户&#xff0c;或者同一用户多次循环时&#xff0c;都可以获取到不同的值 &#xff08;2&#xff09;使用CSV数据文件设置进行参数化的步骤&#xff1f; 实例&#xff1a; 请求&#xff1a;htt…

基于Node.js+Express+MySQL+VUE实现的计算机毕业设计共享单车管理网站

单车信息选择骑行 骑行状态留言公告/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 功能如下&#xff1a; 一、开发目标 在共享经济日益盛行的今天&#xff0c;共享单车作为一种绿色、便捷的出行方式&#xff0c;已经深入人们的日常生活。然而&#xff0c;随着共享…

短效IP是网络世界的神秘助力者

伙伴们&#xff0c;我们都知道网络世界神秘莫测&#xff0c;在当今这个高度数字化的时代&#xff0c;网络如同一张无形的大网&#xff0c;将人们的生活和工作紧密相连&#xff0c;成为不可或缺的一部分。而在这庞大的网络背后&#xff0c;有着很多挑战和危险&#xff0c;为了能…

ps快速更换电商图片背景,轻松变成白底图

前言 在电商领域&#xff0c;一张高质量的商品图片往往能吸引更多消费者的目光&#xff0c;提升商品的点击率和转化率。而白底图&#xff0c;以其简洁、清晰、专业的特点&#xff0c;成为电商平台上商品展示的首选。然而&#xff0c;传统的手动抠图方式不仅耗时耗力&#xff0…

Linux中部署Docker环境;Docker常用操作

一&#xff0c;部署Docker环境 官网手册&#xff1a;CentOS | Docker Docs 1.1、查看一下Linux内核版本 uname -r 要求3.10版本及以上。 2.2、卸载老版本docker&#xff0c;避免产生影响 如果服务器安装过docker&#xff0c;没有卸载再次安装会导致安装失败&#xff0c;首…

Latex和Vscode安装和配置

一、Latex安装教程 打开清华大学开源软件镜像站&#xff0c;下载texlive.iso文件 右键点击ios文件&#xff0c;点击装载 配置latex安装 4. 安装过程 二、VScode安装和配置教程 打开Vscode官网&#xff0c;下载安装包 2.右键&#xff0c;以管理员身份运行VSCode安装包&#…

Day.js时间插件的安装引用与常用方法大全

&#x1f680; 个人简介&#xff1a;某大型国企资深软件研发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…

C++ 数据类型分类

在C中&#xff0c;数据类型可以大致分为内置类型&#xff08;Built-in Types&#xff09;、标准库类型&#xff08;Standard Library Types&#xff09;和自定义类型&#xff08;User-Defined Types&#xff09;三大类。 内置类型&#xff08;Built-in Types&#xff09; 内置…

Kafka和RabbitMQ比较

Kafka和RabbitMQ都是流行的消息队列系统&#xff0c;它们在分布式系统中扮演着至关重要的角色&#xff0c;用于异步消息传递和解耦应用组件。尽管它们共享一些基本的概念&#xff0c;但它们在设计目标、性能特性、使用场景等方面有着显著的差异。 设计目标 Kafka&#xff1a;Ka…