多模態融合算法應用: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.pswp.cn/web/39995.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39995.shtml
英文地址,請注明出處:http://en.pswp.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;確定重要的風險機會以及實施處理的策略的一種規范化的環境。包括識別、分析、制定處理和減緩行動、跟蹤 。合理的風險和機會管理應盡力…

白騎士的Python教學進階篇 2.4 高級數據結構

系列目錄 上一篇&#xff1a;白騎士的Python教學進階篇 2.3 文件操作??????? 在Python中&#xff0c;掌握高級數據結構可以顯著提升你的編程效率和代碼可讀性。高級數據結構包括列表推導式、生成器與迭代器以及裝飾器。本文將詳細介紹這些高級數據結構&#xff0c;幫助…

算法刷題1-10大排序算法匯總

十種常見排序算法可以分為兩大類&#xff1a; 比較類排序&#xff1a;通過比較來決定元素間的相對次序&#xff0c;由于其時間復雜度不能突破O(nlogn)&#xff0c;因此也稱為非線性時間比較類排序。非比較類排序&#xff1a;不通過比較來決定元素間的相對次序&#xff0c;它可…

服務器安裝Nginx教程

1、安裝所需依賴 yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 2、創建nginx目錄并下載Nginx安裝包 //進入/usr/local cd /usr/local//創建nginx目錄 mkdir nginx//進入nginx目錄 cd nginx//下載nginx tar包 wget http://…

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;我喜歡小狗…

[leetcode hot 150]第五百三十題,二叉搜索樹的最小絕對差

題目&#xff1a; 給你一個二叉搜索樹的根節點 root &#xff0c;返回 樹中任意兩不同節點值之間的最小差值 。 差值是一個正數&#xff0c;其數值等于兩值之差的絕對值。 解析&#xff1a; minDiffInBST 方法是主要方法。創建一個 ArrayList 來存儲樹的節點值。inorderTrave…

前端日常掃盲

一、js標簽語句 直接上代碼 for(let i 0; i < 10; i){console.log("頂層循環");for(let j 0; j < 10; j){console.log("內層循環",i,j);if(i * j > 30){console.log("退出頂層循環");break;}} }如上面的代碼&#xff0c;雙層循環&a…

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.1 進程 程序由指令和數據組成&#xff0c;但這些指令要運行&#xff0c;數據要讀寫&#xff0c;就必須將指令加載至CPU&#xff0c;數據加載至內存。在指令運行過程中還需要用到磁盤、網絡等設備。進程就是用來加載指令、管理內存、管理 IO 的。當一個…

鴻蒙系統的開發與學習

1.開發工具的下載 DevEco Studio-HarmonyOS Next Beta版-華為開發者聯盟 安裝、環境配置時&#xff0c;建議 自定義目錄 注意&#xff1a;路徑中不要有 中文、特殊字符。 2.ArkTS基礎總結 1&#xff09;三種數據類型 ① string 字符串&#xff1a;描述信息 ② number 數…

銀聯快捷支付的優點!

快速支付&#xff0c;又稱電子支付或第三方支付&#xff0c;在行業中得到了廣泛的應用。用戶只需通過銀行完成交易。方便快捷是指銀行可以在任何條件下支持用戶之間的轉賬、支付等即時結算服務。快速支付是指用戶可以通過手機實現銀行卡等相關操作。然而&#xff0c;現在大多數…

Java后端每日面試題(day1)

目錄 JavaWeb三大組件依賴注入的方式Autowire和Resurce有什么區別&#xff1f;Spring Boot的優點Spring IoC是什么&#xff1f;說說Spring Aop的優點Component和Bean的區別自定義注解時使用的RetentionPolicy枚舉類有哪些值&#xff1f;如何理解Spring的SPI機制&#xff1f;Spr…