版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
頁(yè)1緒論1.1研究背景及意義全國(guó)各種醫(yī)療機(jī)構(gòu)具有海量的急診就診病例,人為對(duì)就診癥狀進(jìn)行分類預(yù)測(cè)的結(jié)果限于經(jīng)驗(yàn)、決策能力等主觀因素的影響難以避免地出現(xiàn)誤差,其分類精度和效率有很大提升空間。基于貝葉斯分類算法的急診與非急診分類系統(tǒng)是一個(gè)為患者和醫(yī)生提供有效客觀的急診判斷結(jié)果的決策分類系統(tǒng)。這個(gè)系統(tǒng)使用人工智能技術(shù),與傳統(tǒng)分類系統(tǒng)相比更準(zhǔn)確、更易使用,并且具有自動(dòng)學(xué)習(xí)能力,從而實(shí)現(xiàn)科學(xué)、合理、有效的進(jìn)行醫(yī)療資源的合理配置。貝葉斯分類算法(NaiveBayesianClassifer,NBC)對(duì)先驗(yàn)知識(shí)和樣本信息有著強(qiáng)大的整合能力,是數(shù)據(jù)挖掘領(lǐng)域重要的分類算法之一。REF_Ref3009\r\h[1]貝葉斯分類算法的應(yīng)用范圍涉及廣泛,涉及醫(yī)療、自動(dòng)化技術(shù)、新聞傳媒、生物學(xué)、金融數(shù)據(jù)統(tǒng)計(jì)、地質(zhì)勘測(cè)等領(lǐng)域。針對(duì)急診分類問(wèn)題本文提出采用貝葉斯分類算法進(jìn)行分類系統(tǒng)的設(shè)計(jì),其原則是簡(jiǎn)單、有效、準(zhǔn)確以及快捷。從知識(shí)表示、推理方法、知識(shí)獲取方法三個(gè)方面來(lái)改進(jìn)分類系統(tǒng)的性能,能更加智能的進(jìn)行是否急診的分類,以及急診癥狀疾病類別分析,同時(shí)對(duì)促進(jìn)分級(jí)診療制度的進(jìn)一步發(fā)展有積極作用。1.2國(guó)內(nèi)外研究現(xiàn)狀1.2.1國(guó)外研究現(xiàn)狀貝葉斯算法在基于內(nèi)容的文本分類研究中應(yīng)用廣泛,例如軟件缺陷預(yù)測(cè)問(wèn)題、識(shí)別惡意Android程序等其中在1998年DavidHeckerman等人發(fā)表了著名的文獻(xiàn)REF_Ref3199\r\h[2],在文章中使用貝葉斯算法來(lái)分類過(guò)濾垃圾郵件,取得了很好的垃圾郵件過(guò)濾效果。MaronREF_Ref16957\r\h[3]提出了概率索引的思想,依據(jù)基礎(chǔ)概率理論,將貝葉斯定理應(yīng)用于文本分類中等。貝葉斯分類算法在許多的情況下的分類能力甚至能夠超越C4.5、KNN、SVM等一些經(jīng)典的分類算法。1.2.2國(guó)內(nèi)研究現(xiàn)狀與國(guó)外一樣,國(guó)內(nèi)已有許多學(xué)者就急診就診病例分類問(wèn)題進(jìn)行了分析和研究。湯文文等人在文獻(xiàn)REF_Ref3574\r\h[4]中利用描述流行病學(xué)方法分析急診內(nèi)科病例特征,石瑩、潘亞林等人進(jìn)行基于安陽(yáng)市32457例急診成年病例流行病學(xué)特征及轉(zhuǎn)歸分析,希望通過(guò)急診特征分類幫助縮短急診患者就診時(shí)間,為醫(yī)生和患者進(jìn)行判斷提供依據(jù)。REF_Ref18146\r\h[5]同時(shí)已經(jīng)多名學(xué)者將貝葉斯算法應(yīng)用在疾病診斷預(yù)測(cè)上,如朱海,曹眾平等人都先后實(shí)現(xiàn)基于樸素貝葉斯的問(wèn)診推薦系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)REF_Ref3633\r\h[6],樸素貝葉斯分類器在化療所致惡心嘔吐風(fēng)險(xiǎn)預(yù)測(cè)模型上的應(yīng)用REF_Ref3675\r\h[7]并且最后都取得了良好的實(shí)驗(yàn)結(jié)果。還有些國(guó)內(nèi)學(xué)者,提出一些了新的改進(jìn)以獲得更加準(zhǔn)確的過(guò)濾結(jié)果。例如辛梓銘,王芳等人采用優(yōu)化的模糊C均值聚類及權(quán)重計(jì)算方法改進(jìn)樸素貝葉斯算法REF_Ref3770\r\h[8],馮照石針對(duì)醫(yī)療數(shù)據(jù)普遍具有不平衡的特點(diǎn)提出了雙重加權(quán)的貝葉斯算法。REF_Ref3800\r\h[9]基于以上分析,基于Python的貝葉斯分類算法的急診與非急診分類系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)對(duì)于促進(jìn)醫(yī)藥衛(wèi)生事業(yè)長(zhǎng)遠(yuǎn)健康發(fā)展、提高人民健康水平具有重要意義。1.3本文的主要研究?jī)?nèi)容本文通過(guò)貝葉斯分類算法對(duì)急診與非急診癥狀進(jìn)行分析設(shè)計(jì)實(shí)現(xiàn)急診與非急診分類診斷功能。經(jīng)過(guò)測(cè)試分析證明模型系統(tǒng)準(zhǔn)確性和有效性。本文通過(guò)對(duì)急診的情況進(jìn)行分類并根據(jù)患者的就診高峰季節(jié)及時(shí)間段合理安排醫(yī)務(wù)人員工作,并根據(jù)疾病分布特點(diǎn)配備足夠使用的設(shè)備、藥品等,提高急診診治效率。2相關(guān)背景知識(shí)介紹2.1相關(guān)技術(shù)2.1.1Python語(yǔ)言Python語(yǔ)言是一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,最大的優(yōu)勢(shì)之一是擁有豐富的第三方擴(kuò)展庫(kù)使其能夠廣泛用于數(shù)據(jù)分析、科學(xué)計(jì)算、網(wǎng)絡(luò)爬蟲(chóng)、自動(dòng)化運(yùn)維和人工智能等各個(gè)領(lǐng)域。REF_Ref25992\r\h[10]并且其代碼通過(guò)縮進(jìn)實(shí)現(xiàn)嵌套關(guān)系,具備內(nèi)存自動(dòng)管理功能。REF_Ref14299\r\h[11]總之,Python語(yǔ)言是一門(mén)性能強(qiáng)大且具有穩(wěn)定性的高級(jí)程序語(yǔ)言。2.1.2Numpy庫(kù)Numpy(Numpy)是Python中一套高效的科學(xué)計(jì)算與數(shù)據(jù)分析工具,其主要功能是支持大維度組和矩陣操作,并為其提供了海量的數(shù)學(xué)函數(shù)庫(kù),是眾多科學(xué)計(jì)算與數(shù)據(jù)分析的重要基礎(chǔ)。2.1.3Sklearn庫(kù)Sklearn是一款以Numpy,SciPy,Matplotlib等為基礎(chǔ),開(kāi)發(fā)了一套面向機(jī)器學(xué)習(xí)的第三方Python類庫(kù),它支持多個(gè)分類,最近鄰、隨機(jī)森林回歸,聚類,降維,模型選擇,預(yù)處理等多個(gè)方面的能力與算法。2.2常見(jiàn)分類模型介紹2.2.1樸素貝葉斯算法樸素貝葉斯分類算法(NaiveBayesianClassifer,NBC)由數(shù)學(xué)家托馬斯貝葉斯提出,用于刻畫(huà)事件的可能性,以及怎樣從額外的信息中修改概率,這就是所謂的貝葉斯分類法。樸素貝葉斯分類方法就是從這一已有數(shù)百年歷史的基礎(chǔ)上,通過(guò)概率統(tǒng)計(jì)的方式對(duì)數(shù)據(jù)不斷進(jìn)行分類。該方法將過(guò)去一段時(shí)間的相關(guān)數(shù)據(jù)用于對(duì)某一事件的發(fā)生概率進(jìn)行估算,也就是通過(guò)對(duì)訓(xùn)練樣本中各屬性值的分析,對(duì)某一類新特征進(jìn)行觀測(cè)的概率進(jìn)行預(yù)測(cè),從而對(duì)某一新特性所處的類別進(jìn)行預(yù)測(cè)。2.2.2決策樹(shù)算法決策樹(shù)算法(decodingdecision)決策樹(shù)是目前最常用的一種分類與預(yù)測(cè)方法,其核心思想是對(duì)已知的數(shù)據(jù)進(jìn)行歸納,并將其表示為決策樹(shù)。該算法采用自上而下的遞歸分解方法,也就是所謂的分治。首先,從表示整體數(shù)據(jù)的根結(jié)點(diǎn)出發(fā),選取出對(duì)目標(biāo)類別具有最好預(yù)測(cè)能力的屬性,然后將樣本按該屬性的大小進(jìn)行分區(qū),最終在決策樹(shù)的葉結(jié)點(diǎn)上獲得分類結(jié)果。2.2.3支持向量機(jī)算法支持向量機(jī)(SupportVectorMachine,簡(jiǎn)稱SVM)相比于其他幾種分類算法,支持向量機(jī)的發(fā)展時(shí)間較短,這種新的學(xué)習(xí)方法在1995年由Cortes和Vapnik首次提出,這種算法是一種二分類模型,其主要思想是在數(shù)據(jù)空間中找到一個(gè)最優(yōu)的超平面,使得不同類別的樣本點(diǎn)離該超平面的距離最大化。REF_Ref3700\r\h[12]支持向量機(jī)的基本公式:(2-1)其中f(x)是分類器的輸出,w和b是超平面的參數(shù),w是法向量,b是偏置項(xiàng)。x是輸入特征。2.2.4分類模型算法比較通過(guò)計(jì)算準(zhǔn)確率(Accuracy)、精確度(Precision)、召回率(Recall)、F1分?jǐn)?shù)(F1-score)等指標(biāo)。繪制混淆矩陣(ConfusionMatrix)來(lái)直觀地展示模型的分類效果,評(píng)估分析不同分類模型的性能。#
構(gòu)建決策樹(shù)模型dt_classifier
=
DecisionTreeClassifier()dt_classifier.fit(X_train_vec,
y_train)#
構(gòu)建支持向量機(jī)模型svm_classifier
=
SVC(probability=True)svm_classifier.fit(X_train_vec,
y_train)#
繪制樸素貝葉斯的ROC曲線fpr_nb,
tpr_nb,
_
=
roc_curve(y_test,
nb_classifier.predict_proba(X_test_vec)[:,
1])roc_auc_nb
=
auc(fpr_nb,
tpr_nb)plt.plot(fpr_nb,
tpr_nb,
color='blue',
lw=2,
label='Naive
Bayes
(AUC
=
%0.2f)'
%
roc_auc_nb)#
繪制交叉驗(yàn)證準(zhǔn)確率的條形圖plt.figure(figsize=(8,
5))plt.bar(['Decision
Tree',
'SVM'],
[dt_scores.mean(),
svm_scores.mean()],
color=['blue',
'green'])plt.xlabel('Model')plt.ylabel('Cross-Validation
Accuracy')plt.title('Cross-Validation
Accuracy
of
Decision
Tree
and
SVM
Models')plt.ylim(0.9,
1.0)plt.show()圖2.1決策樹(shù)與支持向量機(jī)算法模型評(píng)估圖圖2.2決策樹(shù)與支持向量機(jī)算法交叉驗(yàn)證圖圖2.3三種算法模型ROC對(duì)比圖決策樹(shù)算法對(duì)于連續(xù)型特征的處理不是很好。不適合處理復(fù)雜的關(guān)系,例如異或關(guān)系。對(duì)數(shù)據(jù)的噪聲和缺失值敏感。支持向量機(jī)算法訓(xùn)練和預(yù)測(cè)時(shí)間較長(zhǎng),特別是在大數(shù)據(jù)集上。對(duì)于非常大的數(shù)據(jù)集,內(nèi)存消耗較高。對(duì)于噪聲和缺失數(shù)據(jù)敏感,不易調(diào)參。由于在急診診斷時(shí)常會(huì)出現(xiàn)缺失值,ROC圖的對(duì)比來(lái)看,樸貝葉斯算法不論在準(zhǔn)確率還是在穩(wěn)定性上均與支持向量機(jī)算法、決策樹(shù)算法的差距減少很多。REF_Ref3700\r\h[12]在一定情況下貝葉斯分類算法效率更高。2.3貝葉斯算法理論相關(guān)知識(shí)2.3.1概率和條件概率隨機(jī)試驗(yàn)是在相同條件下進(jìn)行的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果具有不確定性。概率的古典定義如下:在概率論中,事件的概率通常用一個(gè)介于0和1之間的實(shí)數(shù)來(lái)表示,其中0表示不可能發(fā)生,1表示必然發(fā)生。古典概率通常應(yīng)用于具有等可能結(jié)果的離散隨機(jī)試驗(yàn)。這種概率計(jì)算方法建立在相同條件下每個(gè)基本結(jié)果發(fā)生的可能性相等的假設(shè)之上。主要特點(diǎn)是適用于可重復(fù)的實(shí)驗(yàn),其中每個(gè)基本結(jié)果都有相同的機(jī)會(huì)發(fā)生。進(jìn)行n次隨機(jī)試驗(yàn),所有可能的結(jié)果構(gòu)成的集合S稱為樣本空間。S的任意一個(gè)子集A稱為隨機(jī)事件,若A含有m個(gè)結(jié)果,則它的概率定義為:P(A)=m/n。其中n表示所有可能出現(xiàn)的試驗(yàn)結(jié)果總數(shù),m表示事件A包含的事件結(jié)果數(shù)。顯然:P(S)=1,P(?)=0。條件概率:在樣本空間S中,假設(shè)A、B是兩個(gè)隨機(jī)事件,事件A與事件B均為樣本空間的一個(gè)子集,設(shè)樣本空間中的樣本總數(shù)為n,事件A中的樣本個(gè)數(shù)為m1,事件B中樣本個(gè)數(shù)為m2,事件A和B交集部分的樣本數(shù)量為k。在事件B發(fā)生的情況下,事件A也發(fā)生的概率定義為條件概率,記做P(A|B),則有。(2-2)在事件A發(fā)生的條件下事件B發(fā)生的概率為P(B|A),有(2-3)2.3.2貝葉斯定理假設(shè)有兩個(gè)隨機(jī)事件A與B,P(A|B)代表在事件B發(fā)生的前提下事件A發(fā)生的概率大小,而P(B|A)代表在事件A發(fā)生的前提下事件B發(fā)生的概率大小,在通常情況下,P(A|B)與P(B|A)這兩個(gè)條件概率的大小是不相同的,但是條件概率P(A|B)與P(B|A)之間卻有著一定的聯(lián)系,利用貝葉斯定理可以將這兩個(gè)條件概率之間的聯(lián)系描述出來(lái)。REF_Ref16634\r\h[12]因?yàn)椋瑢⒌仁絻啥送瑫r(shí)除以樣本空間的樣本總數(shù)n,所以,其中分別為事件B發(fā)生的概率P(B)與事件A發(fā)生的概率P(A),則:(2-4)對(duì)上式變形我們可以得到:(2-5)上面得到的公式(2-4)便是貝葉斯公式,貝葉斯分類的模式可以總結(jié)成圖2.4。圖2.4貝葉斯推理基本模式圖2.3.3先驗(yàn)概率和后驗(yàn)概率先驗(yàn)概率是貝葉斯理論中的一個(gè)重要概念。是指我們?cè)谑占聰?shù)據(jù)或信息之前對(duì)事件概率的置信度。這種可能性基于過(guò)去的經(jīng)驗(yàn)或該領(lǐng)域的知識(shí)。先驗(yàn)概率通常是主觀的,因?yàn)樗Q于個(gè)人的信仰和經(jīng)驗(yàn),而不是基于新數(shù)據(jù)。在貝葉斯理論中,先驗(yàn)概率與后驗(yàn)概率相關(guān)。通過(guò)考慮新的數(shù)據(jù),我們可以更新我們對(duì)事件的概率的確信度,形成后驗(yàn)概率。后驗(yàn)概率表示在已經(jīng)獲得到某些數(shù)據(jù)或證據(jù)后,我們對(duì)某個(gè)事件發(fā)生的概率的更新的估計(jì)。這種估計(jì)考慮了先前的先驗(yàn)概率以及新的數(shù)據(jù),通過(guò)貝葉斯定理進(jìn)行了修正。(2-6)(2-7)對(duì)上式變形我們可以得到貝葉斯定理:(2-8)(2-9)其中P(B|A)稱為先驗(yàn)概率,P(A|B)稱為后驗(yàn)概率。先驗(yàn)概率是根據(jù)已知數(shù)據(jù)先計(jì)算出來(lái)。后驗(yàn)概率是根據(jù)貝葉斯定理后算出的。2.3.4概率最大分類原則概率最大分類原則是一種基于概率的分類方法,通常用于機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)中的分類問(wèn)題。該原則的核心思想是選將后驗(yàn)概率最大的類別看作為最終的結(jié)果。這與貝葉斯決策理論密切相關(guān),其中考慮了先驗(yàn)概率和觀測(cè)到的數(shù)據(jù)。REF_Ref16464\r\h[13]根據(jù)公式(2-8)可得到后驗(yàn)概率P(A1|B)=P(B|A1)*P(A1)和P(A2|B)=P(B|A2)*P(A2)。根據(jù)后驗(yàn)概率P(A1|B)和P(A2|B)的大小,可確定樣本B所屬的類別??傮w而言,概率最大分類原則是一種基于概率推斷的分類方法,它考慮了不同類別的可能性,并選擇具有最高概率的類別作為最終的分類決策。3可行性分析3.1技術(shù)可行性3.1.1廣泛的應(yīng)用領(lǐng)域Python廣泛用于數(shù)據(jù)分析、科學(xué)計(jì)算、網(wǎng)絡(luò)爬蟲(chóng)、自動(dòng)化運(yùn)維和人工智能等各個(gè)領(lǐng)域。其靈活的特點(diǎn)使其成為一個(gè)被廣泛使用的編程語(yǔ)言,能夠應(yīng)用在各個(gè)技術(shù)領(lǐng)域。3.1.2豐富的庫(kù)和框架支持Python語(yǔ)言自身具備強(qiáng)大的標(biāo)準(zhǔn)庫(kù)外,還有許多高質(zhì)量的第三方庫(kù)可以使用,如在數(shù)據(jù)分析中常用的Numpy、Pandas、SciPy、sklearn和Matplotlib等類庫(kù)。REF_Ref25904\r\h[10]3.2操作可行性系統(tǒng)實(shí)現(xiàn)操作可行性指的是為了更好確保系統(tǒng)在實(shí)際操作中便于使用、管理和維護(hù)的程度。以下是一些關(guān)于系統(tǒng)實(shí)現(xiàn)操作可行性具體的考慮因素。3.2.1系統(tǒng)文檔和培訓(xùn)提供清晰、詳細(xì)的系統(tǒng)文檔以及培訓(xùn)計(jì)劃,幫助用戶和操作人員快速了解系統(tǒng)的操作方法和功能。這有助于減少操作失誤和提高操作效率。3.2.2錯(cuò)誤處理和反饋機(jī)制在計(jì)算機(jī)系統(tǒng)中,\t"/m0_72410588/article/details/_blank"錯(cuò)誤處理是一項(xiàng)至關(guān)重要的任務(wù)。錯(cuò)誤可能會(huì)導(dǎo)致系統(tǒng)崩潰、數(shù)據(jù)丟失,功能喪失。為了及時(shí)發(fā)現(xiàn)問(wèn)題,計(jì)算機(jī)系統(tǒng)應(yīng)具備報(bào)告異常的功能。3.2.3可擴(kuò)展可以在Python程序中調(diào)用使用C、C++等語(yǔ)言編寫(xiě)的程序進(jìn)行混合開(kāi)發(fā),因此Python語(yǔ)言也被稱為膠水語(yǔ)言。REF_Ref25904\r\h[10]3.2.4總結(jié)根據(jù)對(duì)系統(tǒng)的全面評(píng)估和分析,本系統(tǒng)的開(kāi)發(fā)技術(shù)簡(jiǎn)單,開(kāi)發(fā)難度不大,技術(shù)資源成熟,計(jì)能夠在合理的時(shí)間內(nèi)實(shí)現(xiàn)投資回報(bào)。最后,從操作可行性角度來(lái)看,系統(tǒng)符合需求,易于使用和維護(hù)。綜上所述,基于對(duì)系統(tǒng)可行性的全面評(píng)估,我們認(rèn)為該系統(tǒng)具備技術(shù)和操作可行性,并有望為用戶提供高效、穩(wěn)定和滿足需求的服務(wù)。4總體設(shè)計(jì)總體設(shè)計(jì)是軟件工程中系統(tǒng)設(shè)計(jì)階段的一個(gè)重要部分,它關(guān)注系統(tǒng)整體結(jié)構(gòu)和模塊之間的關(guān)系,確保系統(tǒng)能夠滿足需求并在各個(gè)方面都能夠協(xié)同工作??傮w設(shè)計(jì)的目標(biāo)是盡量滿足功能、可維護(hù)性、和安全等方面的要求。這一階段的決策和設(shè)計(jì)將直接影響到后續(xù)的詳細(xì)設(shè)計(jì)和編碼階段。圖4.1系統(tǒng)總體設(shè)計(jì)流程圖5詳細(xì)設(shè)計(jì)5.1數(shù)據(jù)采集與分析5.1.1數(shù)據(jù)來(lái)源醫(yī)學(xué)教育網(wǎng):網(wǎng)站提供臨床常見(jiàn)急診癥狀和危重急癥的診斷和處理?!都痹\醫(yī)學(xué)》:本書(shū)的臨床流程、思維與診治應(yīng)該按照相關(guān)的臨床診療指南、診療規(guī)范、臨床路徑、專家共識(shí),或者編寫(xiě)專家組一致認(rèn)可的診療規(guī)范來(lái)進(jìn)行組織與編寫(xiě)。5.1.2癥狀舉例非急診疾病類型:慢性疾病、慢性自消化疾病、自限性疾病、慢性肝臟疾病、慢性神經(jīng)系統(tǒng)疾病、慢性皮膚疾病等。非急診癥狀:舌苔薄白、發(fā)熱汗出、微惡寒、咳嗽痰稠、咽痛、口渴、鼻燥、脈浮數(shù)、苔薄微黃、身熱少汗、頭暈、頭痛、胸悶、惡心、煩渴、倦怠思睡、偏于濕熱則所下黃糜熱臭、腹痛、舌苔黃膩、頭暈?zāi)垦?、四肢乏力、面色光白、心悸失寐、怯冷倦臥、脈微細(xì)等。表5.1非急診癥狀表編號(hào)慢性疾病慢性消化道疾病自限性疾病慢性肝臟疾病慢性神經(jīng)系統(tǒng)疾病慢性皮膚病1胸悶惡心喉部不適疲勞消瘦鱗屑2氣短嘔吐嘔吐貧血失眠色素少3多尿\o"/%E4%BE%BF%E7%A7%98"便秘水腫頭暈注意力渙散感染4代謝紊亂嘔吐腹瀉失眠記憶力下降瘙癢5口渴失眠咳痰厭食腹瀉厭學(xué)脫屑6\o"/%E8%84%82%E8%82%AA%E5%88%86%E8%A7%A3"脂肪分解增多多汗頭痛較輕記憶力衰退憂郁潰瘍7乏力膽結(jié)石病史頭暈皮下瘀斑消沉疣8消瘦膽囊發(fā)炎心慌\o"/%E9%BC%BB%E8%A1%84"鼻衄自卑水泡9皮膚瘙癢腹脹冷汗\o"/%E7%89%99%E9%BE%88%E5%87%BA%E8%A1%80"牙齦出血恐懼脫色10視力模糊上腹不適乏力黑便哭泣疼痛急診疾病類型:感染性疾病、循環(huán)系統(tǒng)疾病、呼吸系統(tǒng)疾病、消化系統(tǒng)疾病、血液系統(tǒng)疾病、腦血管神經(jīng)系統(tǒng)疾病、創(chuàng)傷與外科疾病、咽喉疾病等。急診癥狀:脫水、惡性、癲癇、口干、抽搐、朦朧、四肢發(fā)冷、循環(huán)衰竭、嘔吐、抽搐、暈厥、面色蒼白、視網(wǎng)膜出血、昏睡、面色蒼白、心臟停搏、大汗、昏迷、四肢厥冷、皮膚潮濕、癲癇持續(xù)狀態(tài)、睫毛反射消失、血壓升高、死亡、氣短、面色蒼白、青光眼等。表5.2急診癥狀表編號(hào)感染性疾病循環(huán)系統(tǒng)疾病呼吸系統(tǒng)疾病消化系統(tǒng)疾病血液系統(tǒng)疾病腦血管神經(jīng)系統(tǒng)疾病創(chuàng)傷與外科疾病咽喉疾病1脫水惡性癲癇口干口干抽搐朦朧\o"/%E5%8F%91%E5%86%B7"四肢發(fā)冷2循環(huán)衰竭嘔吐抽搐暈厥面色蒼白視網(wǎng)膜出血昏睡\o"/%E9%9D%A2%E8%89%B2%E8%8B%8D%E7%99%BD"面色蒼白3發(fā)熱大汗昏迷尿少皮膚潮濕癲癇持續(xù)狀態(tài)睫毛反射消失額部出冷汗4咳嗽血壓升高死亡氣短頭脹青光眼健忘\o"/%E8%A1%80%E5%8E%8B%E5%8D%87%E9%AB%98"血壓升高5胸痛心率高血壓升高無(wú)尿貧血頭痛瞳孔縮小\o"/%E5%BF%83%E5%8A%9B%E8%A1%B0%E7%AB%AD"心力衰竭6氣短血管病心率紊亂腹部疼痛感染運(yùn)動(dòng)障礙呼吸道梗阻\o"/%E6%98%8F%E8%BF%B7"昏迷7癤腫視力障礙心臟停搏過(guò)敏單側(cè)眼球突出紫紺出血死亡8感染驚厥四肢厥冷惡性關(guān)節(jié)疼痛肌肉萎縮休克突發(fā)性眩暈9皮疹昏迷呼吸困難內(nèi)臟痛淋巴結(jié)腫大面癱骨折\o"/%E8%80%B3%E8%81%8B"耳聾10寒戰(zhàn)昏厥面色蒼白胸痛大汗腦疝血管擴(kuò)張異物卡在聲門(mén)5.1.3數(shù)據(jù)處理實(shí)驗(yàn)數(shù)據(jù)來(lái)源于《急診醫(yī)學(xué)》,包含急診類型疾病8類,非急診類型疾病6類,共計(jì)急診癥狀500條。數(shù)據(jù)為文本,先進(jìn)行分詞處理,將文本按照詞語(yǔ)進(jìn)行切分,統(tǒng)計(jì)詞語(yǔ)出現(xiàn)的頻率,進(jìn)行急診與非急診數(shù)據(jù)關(guān)鍵詞提取,并生成對(duì)應(yīng)詞云,為進(jìn)一步計(jì)算做準(zhǔn)備。圖5.1文本分詞實(shí)例#
提取非急診文本數(shù)據(jù)中的關(guān)鍵詞non_emergency_text
=
'
'.join(non_emergency_data.iloc[:,
1:].astype(str).apply(lambda
x:
'
'.join(x),
axis=1))#
創(chuàng)建非急診詞云對(duì)象non_emergency_wordcloud
=
WordCloud(width=800,
height=800,
background_color='white',
stopwords=None,
font_path='SimHei.ttf',
#
指定中文字體路徑圖5.2非急診癥狀詞云圖#
提取急診文本數(shù)據(jù)中的關(guān)鍵詞emergency_text
=
'
'.join(emergency_data.iloc[:,
1:].astype(str).apply(lambda
x:
'
'.join(x),
axis=1))#
創(chuàng)建急診詞云對(duì)象emergency_wordcloud
=
WordCloud(width=800,
height=800,
background_color='white',
stopwords=None,
font_path='SimHei.ttf',
#
指定中文字體路徑
min_font_size=10).generate(emergency_text)圖5.3急診癥狀詞云圖從標(biāo)注數(shù)據(jù)中提取出與急診診斷相關(guān)的特征收集并標(biāo)注了大量的急診病例數(shù)據(jù),由于分類算法無(wú)法直接處理中文文本,需要把每條文本看作特征向量集合,對(duì)每個(gè)特征賦予權(quán)值,將文本數(shù)據(jù)轉(zhuǎn)換為特征向量,常用的方法包括詞袋模型(BagofWords)和TF-IDF(TermFrequency-InverseDocumentFrequency)等??梢允褂肅ountVectorizer或TfidfVectorizer等工具進(jìn)行特征提取和向量化。#
讀取非急診數(shù)據(jù)集non_emergency_data
=
pd.read_excel("nojizhen.xlsx")emergency_data
=
pd.read_excel("jizhen.xlsx")#
合并數(shù)據(jù)集all_data
=
pd.concat([non_emergency_data,
emergency_data],
ignore_index=True)#
2.
將文本數(shù)據(jù)轉(zhuǎn)換為特征向量vectorizer
=
CountVectorizer()X
=
vectorizer.fit_transform(all_data.iloc[:,
1:].astype(str).apply(lambda
x:
'
'.join(x),
axis=1)).toarray()5.2醫(yī)學(xué)診斷過(guò)程分析近年來(lái)大型或三級(jí)醫(yī)院人滿為患,每年急診就診人數(shù)可達(dá)80億,在一些基層醫(yī)院就診人數(shù)很少。急診科患者滯留時(shí)間較長(zhǎng),增加了醫(yī)患關(guān)系緊張及醫(yī)療安全隱患。在實(shí)際應(yīng)用中,貝葉斯分類通常需要結(jié)合大量的醫(yī)學(xué)數(shù)據(jù)和專業(yè)知識(shí)來(lái)進(jìn)行模型訓(xùn)練和優(yōu)化。同時(shí),還需要考慮到患者個(gè)體差異、疾病變異性等因素。貝葉斯分類在醫(yī)學(xué)診療中的應(yīng)用也將隨著社會(huì)進(jìn)步不斷得到拓展和深化。本文將采用以下步驟進(jìn)行醫(yī)學(xué)急診分類診斷:訓(xùn)練樣本:['心緒紊亂','驚厥','心絞痛','肺炎','頭暈’],['感冒','頭暈','驚厥','惡心','心絞痛','頭暈','咳嗽'],['咳嗽','肺炎','心絞痛','心緒紊亂','頭暈','發(fā)燒','癲癇'],['感冒','低血壓','噴嚏','紫紺','乏力','咳嗽'],['心緒紊亂','心絞痛','肺炎','乏力','發(fā)燒','心絞痛','休克'],['感冒',','發(fā)燒','頭暈','惡心']輸入測(cè)試樣本:患者癥狀特征文本惡心頭暈高血壓咳嗽計(jì)算已知癥狀條件下急診概率P(A1|B)P(B|A1)*P(A1)計(jì)算已知癥狀條件下非急診概率P(B|A2)*P(A2)根據(jù)概率最大分類原則做出判斷分析急診分類結(jié)果,輔助診斷進(jìn)行比較P(A2|B),P(A1|B)通過(guò)相同的方式對(duì)癥狀進(jìn)行疾病類型分類,急診預(yù)測(cè)概率高,嘗試預(yù)測(cè)可能的急診疾病類型,非急診預(yù)測(cè)概率高,嘗試預(yù)測(cè)可能的非急診疾病類型:ifprediction[0]==1:#獲取急診類別概率proba=nb_model.predict_proba(symptoms_vector)[0]#獲取急診疾病類別的索引emergency_index=nb_model.classes_.tolist().index(1)#輸出急診疾病類別及概率messagebox.showinfo("急診疾病類型","{}:{:.2f}%".format(emergency_data.columns[emergency_index],proba[1]*100))5.3急診與非急診分類模型設(shè)計(jì)5.3.1訓(xùn)練測(cè)試模型tringSamples=[['心緒紊亂','驚厥','心絞痛','肺炎','頭暈’],['感冒','頭暈','驚厥','惡心','心絞痛','頭暈','咳嗽'],['咳嗽','肺炎','心絞痛','心緒紊亂','頭暈','發(fā)燒','癲癇'],['感冒','低血壓','噴嚏','紫紺','乏力','咳嗽'],['心緒紊亂','心絞痛','肺炎','乏力','發(fā)燒','心絞痛','休克'],['感冒',','發(fā)燒','頭暈','惡心']]classify=[0,1,0,1,0,1]#給出1個(gè)樣本分類Y=(0,1,0,1,0,1)#創(chuàng)建樣本空間defcreateSampleSpace(tringSamples):SamplesSpace=set([])forSamplesintringSamples:SamplesSpace=SamplesSpace|set(Samples)returnlist(SamplesSpace)#計(jì)算每個(gè)樣本點(diǎn)的條件概率P(樣本點(diǎn)|類別)deftraingNB(tringSamples,classify):SamplesSpace=createSampleSpace(tringSamples)print(SamplesSpace)trainMat=[]forSamplesLineintringSamples:trainMat.append(SamplesToVector(SamplesSpace,SamplesLine))row=len(trainMat)col=len(trainMat[0])pAbusive=sum(classify)/float(row)#p0Num=ones(col)#p1Num=ones(col)p0Num=zeros(col)p1Num=zeros(col)p0Tatall=0p1Tatall=0(部分代碼)#給出測(cè)試樣本計(jì)算p=max{P(類別|樣本點(diǎn)),0<=i<=m}deftestingNB(SamplesVec,p0V,p1V,pClass1):p0=sum(SamplesVec*p0V)*(1.0-pClass1)#+log(1.0-pClass1)p1=sum(SamplesVec*p1V)*pClass1#+log(pClass1)ifp0>p1:return'非急診'else:return'急診'#調(diào)用測(cè)試函數(shù)if__name__=='__main__':testing()5.3.3部署急診分類模型defpredict_emergency_symptoms(symptoms):symptoms_vector=vectorizer.transform([symptoms])prob_ne=nb_model.predict_proba(symptoms_vector)[0][0]prob_e=1-prob_ne#取反,表示預(yù)測(cè)為急診的概率returnprob_edefshow_result():symptoms=text_area.get("1.0",tk.END).strip()ifnotsymptoms:messagebox.showerror("錯(cuò)誤","請(qǐng)輸入癥狀!")returnprob_e=predict_emergency_symptoms(symptoms)result_label.config(text="急診概率:{:.2f}%".format(prob_e*100))#進(jìn)一步解釋預(yù)測(cè)結(jié)果ifprob_e>0.5:#急診預(yù)測(cè)概率高,嘗試預(yù)測(cè)可能的急診疾病類型symptoms_vector=vectorizer.transform([symptoms])prediction=nb_model.predict(symptoms_vector)ifprediction[0]==1:#獲取急診類別概率proba=nb_model.predict_proba(symptoms_vector)[0]#獲取急診疾病類別的索引emergency_index=nb_model.classes_.tolist().index(1)#輸出急診疾病類別及概率messagebox.showinfo("急診疾病類型","{}:{:.2f}%".format(emergency_data.columns[emergency_index],proba[1]*100))else:#非急診預(yù)測(cè)概率高,嘗試預(yù)測(cè)可能的非急診疾病類型symptoms_vector=vectorizer.transform([symptoms])prediction=nb_model.predict(symptoms_vector)ifprediction[0]==0:#獲取非急診類別概率proba=nb_model.predict_proba(symptoms_vector)[0]#獲取非急診疾病類別的索引non_emergency_index=nb_model.classes_.tolist().index(0)#輸出非急診疾病類別及概率messagebox.showinfo("非急診疾病類型","{}:{:.2f}%".format(non_emergency_data.columns[non_emergency_index],proba[0]*100))#加載數(shù)據(jù)try:non_emergency_data=pd.read_excel("nojizhen.xlsx")emergency_data=pd.read_excel("jizhen.xlsx")exceptFileNotFoundError:messagebox.showerror("錯(cuò)誤","文件未找到!")exit()#合并數(shù)據(jù)data=pd.concat([non_emergency_data,emergency_data],ignore_index=True)#特征提取X=data.iloc[:,1:].apply(lambdax:''.join(x.dropna().astype(str)),axis=1)y=pd.Series([0]*len(non_emergency_data)+[1]*len(emergency_data))#訓(xùn)練集-測(cè)試集拆分vectorizer=CountVectorizer()X_vectorized=vectorizer.fit_transform(X)X_train,X_test,y_train,y_test=train_test_split(X_vectorized,y,test_size=0.2,random_state=42)#訓(xùn)練模型nb_model=MultinomialNB()nb_model.fit(X_train,y_train)#模型評(píng)估accuracy_nb=nb_model.score(X_test,y_test)5.3.4模型評(píng)估模型評(píng)估(modelassessment)是指對(duì)于一種算法模型,使用一些指標(biāo)評(píng)價(jià)它的精確度、準(zhǔn)確度等。其中使用較多的是ROC曲線,ROC曲線,一個(gè)重要的特點(diǎn)是它的面積,面積為0.5為隨機(jī)分類,辨認(rèn)能力為0,面積越接近于1識(shí)別能力越強(qiáng)。#
計(jì)算和繪制ROC圖y_prob_nb
=
model.predict_proba(X_test)[:,
1]fpr_nb,
tpr_nb,
thresholds_nb
=
roc_curve(y_test,
y_pred)auc_nb
=
roc_auc_score(y_test,
y_pred)plt.figure(figsize=(8,
6))plt.plot(fpr_nb,
tpr_nb,
color='blue',
label='Naive
Bayes
(AUC
=
{:.2f})'.format(auc_nb))plt.plot([0,
1],
[0,
1],
color='gray',
linestyle='--')plt.xlabel('False
Positive
Rate')plt.ylabel('True
Positive
Rate')plt.title('ROC
Curve')plt.legend(loc='lower
right')plt.show()圖5.4貝葉斯分類模型ROC曲線圖由上ROC曲線圖可以看出貝葉斯分類算法面積較大,距離標(biāo)準(zhǔn)線較遠(yuǎn),由于越接近于1識(shí)別能力越強(qiáng),因此可以得出貝葉斯分類算法性能較好,算法簡(jiǎn)單,易于實(shí)現(xiàn),對(duì)小規(guī)模數(shù)據(jù)表現(xiàn)良好,對(duì)缺失數(shù)據(jù)不敏感,可以處理多分類問(wèn)題以及處理大量特征,適用于高維數(shù)據(jù)。#
模型評(píng)估y_pred_nb
=
model.predict(X_test)accuracy_nb
=
accuracy_score(y_test,
y_pred_nb)print("Naive
Bayes
Accuracy:",
accuracy_nb)print("模型評(píng)估報(bào)告:")print(classification_report(y_test,
y_pred))#
繪制混淆矩陣#
Plot
the
confusion
matrixconf_matrix
=
confusion_matrix(y_test,
y_pred)sns.heatmap(conf_matrix,
annot=True,
fmt="d",
cmap="Blues")plt.xlabel('Predicted
Labels')plt.ylabel('True
Labels')plt.title('Confusion
Matrix')plt.show()圖5.5貝葉斯分類模型評(píng)估報(bào)告圖5.6貝葉斯分類模型混合矩陣混淆矩陣的行代表實(shí)際情況,列代表預(yù)測(cè)情況。包括:真正陽(yáng)性、真正陰性、假陽(yáng)性、和假陰性。這些數(shù)值能夠反應(yīng)在分類任務(wù)中的準(zhǔn)確性和召回率等關(guān)鍵性能指標(biāo)。根據(jù)途中指標(biāo)可知,預(yù)測(cè)為真值與實(shí)際為真值約為4,預(yù)測(cè)為假值,實(shí)際為假值的區(qū)域約為6,數(shù)值均高于其余部分,說(shuō)明急診與非急診分類系統(tǒng)模型的準(zhǔn)確率,精確度等較高,模型擬合水平較高。6系統(tǒng)功能實(shí)現(xiàn)系統(tǒng)功能實(shí)現(xiàn)通過(guò)對(duì)一個(gè)系統(tǒng)的各項(xiàng)功能進(jìn)行概要性的介紹,包括其設(shè)計(jì)、開(kāi)發(fā)和實(shí)施過(guò)程中所涉及的主要功能點(diǎn)。本系統(tǒng)通過(guò)利用貝葉斯分類算法,實(shí)現(xiàn)了基本的通過(guò)輸入部分癥狀,獲得是否進(jìn)行急診的結(jié)果提示以及概率分析。同時(shí)還給出了屬于急診或非急診的疾病類別,并且可以進(jìn)行模型性能查看。6.1功能展示圖6.1急診與非急診分類系統(tǒng)界面圖6.2輸入急診癥狀進(jìn)行急診預(yù)測(cè)圖6.3預(yù)測(cè)急診疾病類型圖6.4急診與非急診系統(tǒng)模型性能6.2系統(tǒng)迭代更新本系統(tǒng)界面僅為算法功能實(shí)現(xiàn)的初級(jí)版本,將會(huì)繼續(xù)迭代開(kāi)發(fā),優(yōu)化系統(tǒng)界面,實(shí)現(xiàn)以下頁(yè)面及功能。6.2.1首頁(yè)包括系統(tǒng)簡(jiǎn)介、功能選項(xiàng)、患者信息、疾病類別,急診與非急診患者人數(shù)數(shù)據(jù)對(duì)比統(tǒng)計(jì)圖、日歷等。6.2.2用戶管理可以錄入醫(yī)生和患者以及管理員信息,包括個(gè)人基本信息、聯(lián)系方式、緊急聯(lián)系人信息等,并可以進(jìn)行相應(yīng)的增刪查改。6.2.3病情管理讓患者描述癥狀和疾病情況,包括疼痛程度、持續(xù)時(shí)間等細(xì)節(jié)(根據(jù)數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)來(lái))。填寫(xiě)必要信息(醫(yī)生完成),顯示癥狀詞云,高頻詞,高頻詞數(shù)量等。6.2.4分類診斷結(jié)果顯示患者被分類為急診或非急診的結(jié)果,根據(jù)患者病情描述,系統(tǒng)自動(dòng)或由醫(yī)生設(shè)定,將患者分為急診和非急診,并判斷基本基本類型(如:血液循環(huán)系統(tǒng)疾?。?.2.5急診管理子頁(yè)面1--急診處理頁(yè)面:如果被分類為急診,患者急診狀態(tài)為“急診”,為病人分配醫(yī)院以及醫(yī)生。子頁(yè)面2--非急診處理頁(yè)面:如果被分類為非急診,患者急診狀態(tài)為“非急診”,提供預(yù)約就診時(shí)間、預(yù)約掛號(hào)的選項(xiàng)。子頁(yè)面3--預(yù)約頁(yè)面:顯示可用的預(yù)約時(shí)間表和醫(yī)生。6.2.6緊急聯(lián)系管理提供各醫(yī)院緊急聯(lián)系按鈕或聯(lián)系方式,方便急診病人及時(shí)就醫(yī)。7系統(tǒng)測(cè)試創(chuàng)建Python代碼的測(cè)試環(huán)境是為了確保你的代碼在不同條件下都能正確運(yùn)行。以下是一些建議和方法,幫助你建立一個(gè)有效的Python代碼測(cè)試環(huán)境:7.1單元測(cè)試使用單元測(cè)試框架(如unittest、pytest)可確保函數(shù)和模塊的各個(gè)部分都能按預(yù)期工作。打開(kāi)項(xiàng)目,在PyCharm頂部菜單中選擇"Run"->"EditConfigurations..."。運(yùn)行代碼測(cè)試,選擇"Pythontests"->"Unittests".,在的測(cè)試文件上,右鍵單擊并選擇"Run'Unittestsintest_file'"。運(yùn)行測(cè)試后,在PyCharm底部的"Run"面板中查看測(cè)試結(jié)果。#
測(cè)試input_symptoms
=
"口含硝酸甘油無(wú)緩解
窒息感
恐懼
惡性
嘔吐"predict_emergency_disease(input_symptoms)#結(jié)果根據(jù)輸入的癥狀描述,需要進(jìn)行急診。循環(huán)系統(tǒng)疾?。ㄅR床表現(xiàn)):93.29%圖7.1終端命令下載pytest圖7.2使用pytest測(cè)試程序圖7.3急診預(yù)測(cè)功能測(cè)試圖7.4無(wú)輸入內(nèi)容測(cè)試7.2集成測(cè)試針對(duì)整個(gè)應(yīng)用程序或一組模塊進(jìn)行集成測(cè)試,確保各組件之間的協(xié)同工作正常。再使用工具(如coverage)檢查測(cè)試用例對(duì)代碼的覆蓋程度,確保測(cè)試覆蓋了代碼的各個(gè)分支。在PyCharm中可以查看代碼的覆蓋率報(bào)告。#下載Covragepipinstallcoverage圖7.5下載coverage#使用Coverage運(yùn)行程序進(jìn)行覆蓋測(cè)試coveragerun-mpytestemergency_prediction.py圖7.6運(yùn)行程序圖7.7非急診分支覆
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨域分布式系統(tǒng)的死鎖預(yù)防策略分析-洞察及研究
- 鐵合金爐料燒結(jié)工操作技能測(cè)試考核試卷含答案
- 氣血虧虛患者舌淡現(xiàn)象的量化研究-洞察及研究
- 甲殼類養(yǎng)殖工安全素養(yǎng)模擬考核試卷含答案
- 生殖健康咨詢師安全知識(shí)競(jìng)賽評(píng)優(yōu)考核試卷含答案
- 漆器彩繪雕填工道德強(qiáng)化考核試卷含答案
- 三氯氫硅合成工成果轉(zhuǎn)化強(qiáng)化考核試卷含答案
- 模糊語(yǔ)義匹配算法-洞察及研究
- 空調(diào)器裝配工崗前操作規(guī)范考核試卷含答案
- 文冠果整形修剪課件
- 2025年下半年上海當(dāng)代藝術(shù)博物館公開(kāi)招聘工作人員(第二批)參考筆試試題及答案解析
- 2026國(guó)家糧食和物資儲(chǔ)備局垂直管理局事業(yè)單位招聘應(yīng)屆畢業(yè)生27人考試歷年真題匯編附答案解析
- 癌性疼痛的中醫(yī)治療
- 大學(xué)生就業(yè)面試培訓(xùn)
- 2026年旅行社經(jīng)營(yíng)管理(旅行社管理)考題及答案
- 2026年北京第一次普通高中學(xué)業(yè)水平合格性考試化學(xué)仿真模擬卷01(考試版)
- 東北三省精準(zhǔn)教學(xué)聯(lián)盟2025年12月高三聯(lián)考語(yǔ)文
- 物業(yè)服務(wù)協(xié)議轉(zhuǎn)讓合同
- 2025-2026學(xué)年上學(xué)期初中生物北師大新版八年級(jí)期末必刷??碱}之性狀遺傳有一定的規(guī)律性
- 2024年江蘇省普通高中學(xué)業(yè)水平測(cè)試小高考生物、地理、歷史、政治試卷及答案(綜合版)
評(píng)論
0/150
提交評(píng)論