多模态融合算法应用:CT + 临床文本数据 + pyradiomics提取到的图像特征

多模态融合算法应用 · CT +临床文本数据 + pyradiomics提取图像特征

  • 单模态建模
    • 临床数据建模
    • pyradiomics提取图像特征建模
    • CT建模
  • 多模态建模
    • 前融合
      • 为什么能直接合并在一起?
    • 后融合
    • Med-CLIP:深度学习 + 可解释性

 


单模态建模

临床数据建模

临床文本数据:
在这里插入图片描述

  1. Group: 目标分类标签,表示样本属于哪一组(0或1)。
  2. imageName: 图像名称,表示每个样本对应的图像的名称。
  3. age: 年龄,表示样本的年龄。
  4. RMAX(mm): 某一特征的数值,单位为毫米。
  5. thicken(mm): 另一特征的数值,单位为毫米。
  6. fat: 体脂率,表示样本的体脂含量。
  7. gender(1=man,2=woman): 性别编码,1表示男性,2表示女性。
  • 第1行

    • Group: 1(正类)
    • imageName: M299(对应哪个病)
    • age: 61
    • RMAX(mm): 49.7
    • thicken(mm): 21.4
    • fat: 1(有体脂)
    • gender: 1(男性)
  • 第2行

    • Group: 0(负类)
    • imageName: L168(对应哪个病)
    • age: 62
    • RMAX(mm): 44.4
    • thicken(mm): 20.3
    • fat: 0(无体脂)
    • gender: 1(男性)
  • 第3行

    • Group: 0(负类)
    • imageName: L264(对应哪个病)
    • age: 49
    • RMAX(mm): 72.2
    • thicken(mm): 22.3
    • fat: 0(无体脂)
    • gender: 2(女性)

这张图展示了数据集的前几行样本及其特征,包括年龄、RMAX值、thicken值、体脂率和性别。

样本比(数据平衡):

  • 0 类 122

  • 1 类 106

# 导入常用库
import sys  # 系统特定参数和函数
import pandas as pd  # 数据处理和分析库
import os  # 操作系统接口模块
import random  # 生成随机数的模块
import shutil  # 文件操作模块
import sklearn  # 机器学习库
import scipy  # 科学计算库
import numpy as np  # 数组和矩阵处理库
import matplotlib.pyplot as plt  # 数据可视化库
from sklearn.linear_model import LassoCV  # 导入LassoCV回归模型
from sklearn.preprocessing import StandardScaler  # 导入标准化工具
import seaborn as sns  # 数据可视化库clinic_df = pd.read_csv("clinic_data.csv")  # 读取临床数据CSV文件
new_clinic_df = clinic_df.drop('imageName', axis=1)  # 删除无用的'imageName'列
selected_columns1 = new_clinic_df.columns  # 获取数据框的列名from pycaret.classification import *  # 导入PyCaret分类模块
s1 = ClassificationExperiment()  # 创建分类实验对象
s1.setup(data = new_clinic_df, target = 'Group', session_id=123, fix_imbalance_method=False, normalize=True)  
# 设置分类实验的初始参数:使用new_clinic_df数据框,目标列为'Group',设置随机种子为123,不进行数据平衡处理,对数据进行标准化
best1 = s1.compare_models()  # 比较不同的分类模型,选择表现最好的模型
s1.evaluate_model(best1)  # 评估最优模型的性能
s1.plot_model(best1, 'auc')  # 绘制最优模型的ROC曲线并显示AUC值
s1.predict_model(best1)  # 使用最优模型对数据进行预测

预测结果:模型的准确率 (Accuracy) 为 68.12%。

尝试的模型有:

  1. Logistic Regression (LR):逻辑回归
  2. K Nearest Neighbors (KNN):K近邻
  3. Naive Bayes (NB):朴素贝叶斯
  4. Decision Tree (DT):决策树
  5. Random Forest (RF):随机森林
  6. Gradient Boosting Classifier (GB):梯度提升分类器
  7. Support Vector Machine (SVM):支持向量机
  8. Light Gradient Boosting Machine (LightGBM):轻量梯度提升机
  9. Extreme Gradient Boosting (XGBoost):极限梯度提升
  10. CatBoost Classifier (CatBoost):CatBoost分类器
  11. Extra Trees Classifier (ET):极端随机树
  12. AdaBoost Classifier (ADA):AdaBoost分类器
  13. Linear Discriminant Analysis (LDA):线性判别分析
  14. Quadratic Discriminant Analysis (QDA):二次判别分析

 


pyradiomics提取图像特征建模

pyradiomics提取图像特征,有近50种。
在这里插入图片描述

import sys 
import pandas as pd
import os
import random
import shutil
import sklearn 
import scipy
import numpy as np
import radiomics  # 这个库专门用来提取特征
from  radiomics import featureextractor
from sklearn.linear_model import LassoCV  # 导入Lasso工具包LassoCV
from sklearn.preprocessing import StandardScaler  # 标准化工具包StandardScalerfeature_df = pd.read_csv("radiomics_feature_data.csv")  # 读取放射学特征数据的CSV文件
new_feature_df = feature_df.drop("imageName", axis=1)  # 删除无用的'imageName'列
from pycaret.classification import *  # 导入PyCaret分类模块s2 = ClassificationExperiment()  # 创建分类实验对象
s2.setup(data = new_feature_df, target = 'Group', session_id=123, fix_imbalance_method=False, normalize=True, feature_selection = True, feature_selection_method='classic', n_features_to_select=0.2)  
# 设置分类实验的初始参数:使用new_feature_df数据框,目标列为'Group',设置随机种子为123,不进行数据平衡处理,对数据进行标准化,
# 使用特征选择,特征选择方法为'classic',选择20%的特征(机器学习不合适太多特征,需要选择一些主要信息的特征)selected_columns = s2.dataset_transformed.columns  # 获取转换后数据集的列名(代表选择的特征有哪些)
best2 = s2.compare_models()  # 比较不同的分类模型,选择表现最好的模型
s2.predict_model(best2)      # 评估最优模型的性能

预测结果:模型的准确率 (Accuracy) 为 67.33%。

比临床数据预测的 68.12% 低一些。

从所有特征选了20%特征,具体是哪些:

['A_wavelet-LHL_glszm_SmallAreaEmphasis','A_wavelet-HHH_glszm_SizeZoneNonUniformityNormalized','A_wavelet-LLL_glszm_GrayLevelNonUniformityNormalized','A_wavelet-LHH_glcm_InverseVariance','A_original_glszm_SizeZoneNonUniformityNormalize','A_original_ngtdm_Strength','A_wavelet-LHH_glszm_GrayLevelNonUniformity','A_log-sigma-5-0-mm-3D_firstorder_90Percentile','A_wavelet-HLL_glcm_MCC', 'A_log-sigma-4-0-mm-3D_ngtdm_Contrast']

CT建模

 


多模态建模

前融合

在这里插入图片描述

把临床文本数据(删除imageName了,5个)和 pyradiomics提取到的图像特征(20%,9个)

columns = ['Group', 'age', 'RMAX(mm)', 'thicken(mm)', 'fat','gender(1=man,2=woman)','A_wavelet-LHL_glszm_SmallAreaEmphasis','A_wavelet-HHH_glszm_SizeZoneNonUniformityNormalized','A_wavelet-LLL_glszm_GrayLevelNonUniformityNormalized','A_wavelet-LHH_glcm_InverseVariance','A_original_glszm_SizeZoneNonUniformityNormalized','A_original_ngtdm_Strength','A_wavelet-LHH_glszm_GrayLevelNonUniformity','A_log-sigma-5-0-mm-3D_firstorder_90Percentile','A_wavelet-HLL_glcm_MCC', 'A_log-sigma-4-0-mm-3D_ngtdm_Contrast']

在这里插入图片描述

merge_df = pd.read_csv("merge.csv")  # 读取合并数据的CSV文件
columns = ['Group', 'age', 'RMAX(mm)', 'thicken(mm)', 'fat','gender(1=man,2=woman)', 'A_wavelet-LHL_glszm_SmallAreaEmphasis','A_wavelet-HHH_glszm_SizeZoneNonUniformityNormalized','A_wavelet-LLL_glszm_GrayLevelNonUniformityNormalized','A_wavelet-LHH_glcm_InverseVariance','A_original_glszm_SizeZoneNonUniformityNormalized','A_original_ngtdm_Strength','A_wavelet-LHH_glszm_GrayLevelNonUniformity','A_log-sigma-5-0-mm-3D_firstorder_90Percentile','A_wavelet-HLL_glcm_MCC', 'A_log-sigma-4-0-mm-3D_ngtdm_Contrast']  
# 指定需要的列,包含目标列和若干特征列new_merge_df = merge_df[columns]  # 从数据框中选择指定的列
from pycaret.classification import *  # 导入PyCaret分类模块s3 = ClassificationExperiment()  # 创建分类实验对象
s3.setup(data = new_merge_df, target = 'Group', session_id=123, fix_imbalance_method=False, normalize=True)  
# 设置分类实验的初始参数:使用new_merge_df数据框,目标列为'Group',设置随机种子为123,不进行数据平衡处理,对数据进行标准化best3 = s3.compare_models()  # 比较不同的分类模型,选择表现最好的模型
s3.predict_model(best3)  # 使用最优模型对数据进行预测

前融合预测结果:71.01%。

  • pyradiomics提取图像(20%)特征建模:67.33%

  • 临床数据建模:68.12%

如果想进一步优化,可以多选一些特征,这个只选了20%。

为什么能直接合并在一起?

临床数据

(Group’, ‘age’, ‘RMAX(mm)’, ‘thicken(mm)’, ‘fat’,
‘gender(1=man,2=woman)’)

和pyradiomics提取图像特征

(Group、‘A_wavelet-LHL_glszm_SmallAreaEmphasis’,
‘A_wavelet-HHH_glszm_SizeZoneNonUniformityNormalized’,
‘A_wavelet-LLL_glszm_GrayLevelNonUniformityNormalized’,
‘A_wavelet-LHH_glcm_InverseVariance’,
‘A_original_glszm_SizeZoneNonUniformityNormalized’,
‘A_original_ngtdm_Strength’,
‘A_wavelet-LHH_glszm_GrayLevelNonUniformity’,
‘A_log-sigma-5-0-mm-3D_firstorder_90Percentile’,
‘A_wavelet-HLL_glcm_MCC’, ‘A_log-sigma-4-0-mm-3D_ngtdm_Contrast’)

为什么能直接合并在一起?

临床数据和从图像中提取的放射学特征可以直接合并在一起是因为它们都描述了同一组样本的不同方面。

后融合

在这里插入图片描述

Med-CLIP:深度学习 + 可解释性

不止 pyradiomics 能提取图像特征,深度学习方法更好,但深度学习方法提取的特征没有可解释性。

从高维空间提取的特征,最后压缩成一行给你,完全看不懂到底是什么。

那使用多模态大模型方式更好。

虽然也是临床数据(年龄、性别、疾病标签等)+ 患者图像数据进行预测,但大模型会给你详细的解释 — 之所以说 yyy 病,是因为 xxx 特征,是真能解释清楚。

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

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

相关文章

WPF Menu实现快捷键操作

很多小伙伴说&#xff0c;在Menu中&#xff0c;实现单个快捷键操作很简单&#xff0c;怎么实现多个快捷键操作和&#xff0c;组合快捷键呢&#xff0c;今天他来了。 上代码和效果图 一、Ctrl Shift 任意子母键实现快捷键组合 <Window x:Class"XH.TemplateLesson.M…

【测试开发】【postman】按顺序循环执行接口

postman按顺序循环执行接口 新建接口接口排序执行请求集合 新建接口 Request 001 Request 002 Request 003 接口排序 在Request 001的Tests中添加代码 postman.setNextRequest("Request 002");在Request 002的Tests中添加代码 postman.setNextRequest("Requ…

Redis 7.x 系列【17】四种持久化策略

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 案例演示2.1 无持久化2.2 RDB2.3 AOF2.4 混合模式2.4.1 方式一&#xff1a;…

线性代数|机器学习-P21概率定义和Markov不等式

文章目录 1. 样本期望和方差1.1 样本期望 E ( X ) \mathrm{E}(X) E(X)1.2 样本期望 D ( X ) \mathrm{D}(X) D(X) 2. Markov 不等式&Chebyshev不等式2.1 Markov不等式公式 概述2.2 Markov不等式公式 证明&#xff1a;2.3 Markov不等式公式 举例&#xff1a;2.4 Chebyshev不…

AI绘画 Stable Diffusion图像的脸部细节控制——采样器全解析

大家好&#xff0c;我是画画的小强 我们在运用AI绘画 Stable Diffusion 这一功能强大的AI绘图工具时&#xff0c;我们往往会发现自己对提示词的使用还不够充分。在这种情形下&#xff0c;我们应当如何调整自己的策略&#xff0c;以便更加精确、全面地塑造出理想的人物形象呢&a…

域环境提权

域内提权漏洞(1) Netlogon域权限提升 1.查看域控主机名称 net group "domain controllers" /domain 2.检测漏洞是否存在 https://github.com/SecuraBV/CVE-2020-1472.git python zerologon_tester.py OWA 192.168.52.138 3.漏洞利用&#xff0c;对域账号重置 ht…

《简历宝典》01 - 一文带你学会如何写一份糟糕透顶的简历

我们每个人几乎都会面对找工作这件事&#xff0c;而找工作或者说求职首先就是要写一份简历。今天狗哥将以一个不同的视角带你写一份无与伦比&#xff0c;糟糕透顶的求职简历&#xff0c;说实话&#xff0c;其实几年前&#xff0c;我就是这么写的。 目录 1. 文件名 2. 基本信…

【项目管理】项目风险管理(Word原件)

风险和机会管理就是在一个项目开发过程中对风险进行识别、跟踪、控制的手段。风险和机会管理提供了对可能出现的风险进行持续评估&#xff0c;确定重要的风险机会以及实施处理的策略的一种规范化的环境。包括识别、分析、制定处理和减缓行动、跟踪 。合理的风险和机会管理应尽力…

Lesson 47 A cup of coffee

Lesson 47 A cup of coffee 词汇 like v. 喜欢&#xff0c;想要 用法&#xff1a;like 物品 / 人 喜欢……    like 动词ing 喜欢做……&#xff08;习惯性&#xff09;    like to 动词原形 喜欢做……&#xff08;一次性&#xff09; 例句&#xff1a;我喜欢小狗…

opencv-yolo-tiny车辆检测 ----20240705

opencv-yolo-tiny 实现车辆检测 opencv.dnn模块已经支持大部分格式的深度学习模型推理,该模块可以直接加载tensorflow、darknet、pytorch等常见深度学习框架训练出来的模型,并运行推理得到模型输出结果。opecnv.dnn模块已经作为一种模型部署方式,应用在工业落地实际场景中。…

持续交付:自动化测试与发布流程的变革

目录 前言1. 持续交付的概念1.1 持续交付的定义1.2 持续交付的核心原则 2. 持续交付的优势2.1 提高交付速度2.2 提高软件质量2.3 降低发布风险2.4 提高团队协作 3. 实施持续交付的步骤3.1 构建自动化测试体系3.1.1 单元测试3.1.2 集成测试3.1.3 功能测试3.1.4 性能测试 3.2 构建…

鸿蒙系统的开发与学习

1.开发工具的下载 DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟 安装、环境配置时&#xff0c;建议 自定义目录 注意&#xff1a;路径中不要有 中文、特殊字符。 2.ArkTS基础总结 1&#xff09;三种数据类型 ① string 字符串&#xff1a;描述信息 ② number 数…

Java后端每日面试题(day1)

目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别&#xff1f;Spring Boot的优点Spring IoC是什么&#xff1f;说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值&#xff1f;如何理解Spring的SPI机制&#xff1f;Spr…

听说现在AI产品经理薪资30k起步?0基础可以转行AI产品吗?

2024年&#xff0c;还有什么新风口&#xff1f; AI、元宇宙、NFT… 很多人不知道&#xff0c;其实不管是元宇宙还是NFT&#xff0c;它们本质上就是人工智能领域。 AI自身应用领域非常广泛&#xff0c;大批高薪岗位随之涌了出来&#xff0c;包括AI产品经理。 AI产品经历具体工…

【LeetCode:841. 钥匙和房间 + DFS】

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

安卓手机已删除短信如何恢复?这2个技巧,找回离家出走的短信

手机宛如一座丰富的宝库&#xff0c;珍藏着生活中的点滴回忆。其中&#xff0c;短信作为沟通的桥梁&#xff0c;记录着我们与亲朋好友间的温情脉脉&#xff0c;承载着无数珍贵的瞬间。然而&#xff0c;有时&#xff0c;我们却会不慎触发宝库中的机关&#xff0c;使得这些宝贵的…

【计算智能】遗传算法(二):基本遗传算法在优化问题中的应用【实验】

前言 本系列文章架构概览&#xff1a; 本文将介绍基本遗传算法在解决优化问题中的应用,通过实验展示其基本原理和实现过程&#xff1a;选取一个简单的二次函数作为优化目标&#xff0c;并利用基本遗传算法寻找其在指定范围内的最大值。 2. 基本遗传算法&#xff08;SGA&#x…

从0构建一款appium-inspector工具

上一篇博客从源码层面解释了appium-inspector工具实现原理&#xff0c;这篇博客将介绍如何从0构建一款简单的类似appium-inspector的工具。如果要实现一款类似appium-inspector的demo工具&#xff0c;大致需要完成如下六个模块内容 启动 Appium 服务器连接到移动设备或模拟器启…

vue 中 使用腾讯地图 (动态引用腾讯地图及使用签名验证)

在设置定位的时候使用 腾讯地图 选择地址 在 mounted中引入腾讯地图&#xff1a; this.website.mapKey 为地图的 key // 异步加载腾讯地图APIconst script document.createElement(script);script.type text/javascript;script.src https://map.qq.com/api/js?v2.exp&…

SS8812T替代DRV8812的国产双通道H桥电机驱动芯片

由工采网代理的SS8812T是一款国产双通道H桥电机驱动芯片&#xff1b;该芯片为打印机和其它电机一体化应用提供一种双通道集成电机驱动方案&#xff1b;可Pin-to-Pin兼容替代DRV8812&#xff0c;可广泛应用于POS、打印机、安防相机、办公自动化设备、游戏机、机器人等。 产品描述…