




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
[8]。對于ANN算法,雖然此類方法應用也較為廣泛且精確度高,但考慮到實際應用中時間的關系,所以對于本次課題,我選用的是SVM(支持向量機算法)進行模型訓練的建立和分類實現,最終實現的結果能大致基于機器模型判斷出音頻的健康與否,二劃分為肺炎患者與健康者。本次課題研究可用于多方面場合,比如醫用簡易診斷、患者自查或是一些相關方面領域的智能輔助分析。本課題研究主要包括四個方面:其一是通過MATLAB對采集到的音頻進行數據的讀取,將其以文本形式顯示出來,再對特征值維度進行分析并對于過多的特征值進行主成分降維(PCA)提取音頻信號特征。其二是針對降維后的數據特征以及量化標簽進行SVM算法的模型建立以此來進行疾病與健康的識別。第三是根據SVM算法建立的模型測試患者音頻的識別準確率。最后是對于MATLAB程序得到的結果進行繪圖分析和進一步的探討。2肺音信號分類理論基礎2.1肺音基礎理論肺音,顧名思義主要是人體肺部等器官工作時發出的聲音,肺音同樣也是指一系列的聲音總稱,其中包含很多比如氣管音等。肺音大體可分為正常與異常兩大類。在內部疾病的影響作用下,肺部發出的聲音會相比正常者有所不同,較正常肺音信號,病變之后發出的聲音會包含一系列的附加聲音,比如濕羅音,干羅音等。濕羅音是人體呼吸時從外部吸入的氣體通過人體呼吸道中的分泌物比如痰液而形成如水泡破裂般的聲音,所以也因此稱為稱水泡音,通常支氣管類病癥會伴有此音。干羅音則是由于人體氣管通道小,導致從外部吸入空氣通過時發出的聲音。哮鳴音是廣泛小支氣管狹窄所致,是一種音調較高的干羅音,若患者患有支氣管哮喘那么就有哮鳴音伴隨產生。爆裂音則是判斷患者是否患肺炎等病癥的依據,這是一種持續時間很短的突發音,產生于吸入氣體與體內氣管之間的摩擦。從時域頻域上分析來看,健康個體肺音信號的能量主要分布于低頻部分且頻響范圍一般大于50Hz而小于3000Hz,在這個范圍內會有很多人體內產生的其他聲音與之混雜,比如心臟活動產生的心音,人體內各種腸胃的活動聲等。因而繼續采用傳統的人工聽診方式會造成大量信息的流失和聽診結果的不確定性,同時也有必要對于采集到的音頻信號做預處理工作。肺音音頻中隨機噪聲的產生一來可能由于人體本身,二來也可能來自聲音采集器,若所選用采集音頻器件的靈敏度過高,在這種情況下,采集器與人體或者環境噪聲的影響就會被其接受,通過器件內部電路從而成倍放大,進而影響到整個采集的音頻。其中工頻干擾部分則主要來自于所用器件及其周遭的電子設備,這種干擾最明顯的體現就是對于音頻信號造成突刺干擾,即在波形上會形成一個突起的“山峰”。而儀器噪聲部分則由熱噪聲組成為主,人體是一個復雜的工作系統,期內各種各樣的器官時時刻刻都在工作,所以由其他器官產生的噪聲自然也時時刻刻都在發出聲音,同樣的道理,采集過程中周圍的環境也不一定是理想環境,儀器啟動的聲音,周圍人群行走的身影,甚至被采集者自身所發出的聲音都可以稱之為噪聲。在這樣的情況下,對于所采集音頻一個必不可少的操作就是對其進行濾波處理和去噪處理,最后經過處理得到的音頻才能進行進一步的操作。2.2常見肺音異常音分類除此之外,在整個肺音分類過程中有一個問題我們需要格外注意,主要體現在對于檢測分類的正確性和判斷指標特征。目前在目前國際上并沒有統一的標準進行詳細劃分各種類的肺音,因為影響判斷的因素有很多且因各地區科技水平參差不齊等其他方面的限制做不到完全一樣。由于各地方科研條件不一致,實驗環境的參差不齊使得所進行實驗數據結果也有一定的參差性,在往后的肺音分類研究往后的繼續發展中,這是一個需要解決的重要難題。一般的肺音信號屬于隨機信號,且都是非平穩信號,在進行去噪處理時要注意在去除一般噪聲的同時不能消除異常肺音,否則會對診斷結果造成很大的影響。隨著研究學者們的研究不斷推進,對于爆裂音而言,其逐漸代替了之前的羅音等其他叫法。常見分類如下表所示:圖2-1常見異常音分類圖2.3分類流程設計肺音信號分類整個過程包含音頻信號的采集、對數據的預處理、特征提取以及特征選擇、根據算法建立模型、對樣本進行測試、結果評估等過程,具體流程如下:結果評估測試樣本算法模型建立特征提取,特征選擇預處理數據采集結果評估測試樣本算法模型建立特征提取,特征選擇預處理數據采集圖2-2一般肺音分類流程圖數據采集:用專門采集患者音頻器件收集,比如AKGC417L、Meditron設備等,儲存音頻格式為wav格式,音頻信號均為真實采集所得。預處理:包括周期分割、對所測得數據標準化等步驟,目的是使得數據集更貼合課題的要求。特征提取和特征選擇:本數據集頻率統一為4000Hz,基于軟件為MATLAB,讀取音頻時特征總數為80000個,所以采用PCA降維技術來減少所用的特征值個數,降維后最具代表性的數據特征于量化標簽進行模型的建立。算法模型建立:通過預處理好的數據集進行訓練集和測試集的劃分,因為本次課題所采集的樣本數不多,所以課題選用支持向量機(SVM)算法進行訓練模型的建立。測試準確率:將待測樣本導入訓練好的模型中進行測試。結果評估:對模型測試結果進行分析,對所測得結果進行繪圖表示,計算差錯率。在本次課題中我負責的部分主要是對采集到并經過初步處理的音頻信號進行分類工作,具體流程圖如下:歸一化處理劃分訓練、測試集PCA降維數據處理,整合讀取圖像信息初始化程序歸一化處理劃分訓練、測試集PCA降維數據處理,整合讀取圖像信息初始化程序結果分析并進行表示對測試集數據進行預測訓練SVM模型結果分析并進行表示對測試集數據進行預測訓練SVM模型圖2-3研究進行流程圖3主成分分析(PCA)在肺音分類中的應用3.1主成分分析(PCA)基礎理論在對特征值進行降維操作方面,PCA這項技術應用非常廣泛,它的方法是利用線性投影方式把一個維度的特征值數據進行映射操作投影到另一個維度上去,而被投影的那一個維度往往比原先的維度更低,而我們知道方差往往可以表示數據的偏離程度,所以如果被投影維度上的數據其方差可以到達最大值,那么通過這個操作我們就可以用盡可能少的低維數據來表達原先盡可能多的高維數據,也就是達到了降維的目的,這就是PCA降維技術的通俗介紹。PCA降維技術作為一種在現今研究中廣為流傳的數據降維算法,可以將其用唯物辯證法的觀點視為將事物的主要矛盾把握的一種途徑,從數學上理解也是一種多元的統計分析方法,在特征提取研究方向上一直是很受研究學者們稱贊的算法,無論是在以前還是在現在都一直是一個熱點技術。不僅因為通過PCA降維操作對初始數據進行降維特征處理后可以讓問題的復雜程度和處理時間大大降低,它同時也能提升初始數據集的信噪比,從而來提高數據的抗干擾能力和傳輸質量。我們知道在概率論中方差定義為變量含有的信息量,如果一個變量的方差越大那么它所含的信息量就越大,但如果在方差為0的情況下我們就可以認為此變量包含的信息量為0。PCA降維的一個重要原則是盡可能多的保證“信息量不丟失”,同時選擇那些降維后最具代表性的數據進行數據選擇,如果原始數據很多那么在降維的時候應該對愿特數據往保有最大信息量的那些維度上進行投影,經過這樣的操作可以將原特征投影到這些維度上使降維后信息量保留盡可能的達到最大。通過聯系線性代數的知識舉一個簡單的例子,我們將初始數據集通過投影放到一個新的空間中,可以類比矩陣里面的變換,只不過是換了一種更簡潔的形式將其表示出來,這樣我們通過兩者之間的一個轉換系數或者是公式可以把兩者進行聯系起來,轉換到新的空間中后,如果要把原來的數據集在新的空間中表示出來則和原先的表達方式發生了改變,我們只用原來數據集的最大的一個線性無關組的特征值對應的空間的坐標就可以進行表示。舉一個直觀的例子,如果初始樣本數目有50個,每個樣本的特征值有一千個,維數也就是50*1000,我們對于這種數據集就要進行PCA降維,因為特征值超出了處理能力的范圍,而且總體數目因為太多,可能有很多特征值可能并不是很重要,也就是包含數據集的信息很少,如果我們不進行降維操作直接進行尋訓練模型的建立,那么分析難度會非常大且時間所需也會非常大。PCA降維操作首先需要運用線性代數知識來計算一個初始樣本矩陣的協方差矩陣,通過計算完后這個協方差矩陣維度是1000*1000,然后要對這個協方差矩陣再次計算相應參數,即特征值和其對于特征向量,最后通過前述計算出的最大特征值的特征向量表達出轉換矩陣。進行完上述操作后就可以對之前計算出的特征值和特征向量進行由高到低的排列.根據貢獻率來看,倘若前30個特征值已經可以把整個數據集盡可能多的表示出來,后面的20個特征值對于數據集的表現影響不大的話,在這樣的情況下我們只用把前30個特征值的特征向量進行提取。這樣就組成了一個1000*30的轉換矩陣,最后將原先初始的樣本矩陣和這個轉換矩陣進行相互乘積,也就是50*1000*1000*30=50*30,這樣一來,特征值數目就從原來的一千個降低到了30個,不僅讓分析過程難度大大的降低了,也在分析時間是縮短了很多,也就實現了降維的過程。通常情況下,PCA降維操作后樣本的特征值數目不會超過最開始的初始樣本數,即不會超過初始樣本數。對于給定的數據集,PCA降維一般步驟如下圖所示:圖3-1PCA降維步驟圖3.2PCA在MATLAB中的應用3.2.1三種PCA具體實現方法在MATLAB中實現PCA降維的方法有多種,這里主要介紹以下三種方法。用MATLAB系統本身自帶函數進行降維。(princomp函數)其中X為初始數據集的矩陣,COEFF代表所計算得出協方差矩陣的特征向量,SCORE是其主成分,若要降k維只需取前從前方往后的k列數據即可,latent則是指包含協方差矩陣特征值的向量,通常用的比較少。進行手動編程實現PCA。具體計算過程如下:將原始數據按m行n列排列為樣本矩陣X。(行數為樣本個數,列數為每個樣本對應的特征值個數)求出樣本矩陣X的協方差矩陣C和樣本均值m。求協方差矩陣對應的特征值D和特征向量V。(本次課題中MATLAB自帶的eigs()函數來求值)對于所求出的特征向量按對應特征值數值大小降序排列按行排列成一個矩陣P,如果要降維至A維,那么只需要前A行數據即可(eigs()返回特征值構成的向量本身就是從大到小排序的)Y=(X-m)×P即為降維到A維后的數據。運用快速PCA降維函數。[pcaDataCOEFF]=fastPCA(X,k)。在降維過程中最主要的計算是協方差矩陣的特征值和特征向量,在函數中X代表初始數據集的矩陣,A指要要降維至多少維,pcaData是降至A維后的A維樣本特征向量組成的矩陣,每行一個樣本,列數A為降維后的樣本特征維數,主成分分量即COEFF,也即樣本協方差矩陣的特征向量。3.2.2代碼中PCA具體實現本次課題由于讀取音頻數據的特征值總數共80000個,特征值總數太多且不利于進行具體分析和最后訓練模型,所以計劃采用PCA將其降維至60個特征值,由于前期對PCA降維部分詳細原理了解不是很清楚,個人本著想深入學習的思想,參考了不少開源資源采用了前面的第二種PCA降維方法,即手動進行降維步驟。步驟為下:第一:確定所需降至的維數。第二:求初始數據的樣本均值。第三:計算初始數據矩陣的協方差矩陣。第四:對求出的協方差矩陣求特征值和特征向量,這里采用MATLAB自帶的eigs()函數進行處理。第五:對求得的特征向量進行歸一化處理第六:線性變換投影至K維。此部分具體代碼部分如下圖所示:圖3-2PCA降維程序圖4支持向量機(SVM)在肺音分類中的應用4.1支持向量機(SVM)基礎理論支持向量機(SVM)是最近幾年來運用廣泛且受到大量關注的一類算法,支持向量機此算法以統計學方面理論為基礎,它最早是由Vapnik等研究者學者于上世紀末期提出的,此算法在解決小樣本數據集、數據集屬性為線性不可分等問題中表現效果較之于其他算法更為突出,此外SVM可以于其他很多問題相結合,比如函數擬合等其他機器學習問題。支持向量機可以進行分類和回歸問題的討論、分析數據等。支持向量機算法在解決小樣本模式識別中具有較強優勢,在樣本數量需求上SVM并不需要特別多的樣本,它會根據訓練模型的復雜程度和學習能力間找到一個最優中間點,并且可以找出最優的支持向量,但訓練時間較長,需要自己不斷進行實驗和調試以尋找到最優的核函數以及相關參數。但這也并不是說樣本數越少就越好,因為從實際角度來說,大部分機器學習分類算法中更多的樣本總是能帶來更好的分類效果和準確性。此外,對于樣本數據集在線性可分和線性不可分情況下應用SVM算法都可應對,其主要通過引用核函數來實現。支持向量機的具體過程是將向量映射到一個高維空間中(與PCA降維相反),在這個高維空間中尋找一個超平面,這個超平面是最大間隔的,建立方向合適的分隔超平面將使兩個與之平行的超平面間的距離最大化,通過這種定義方式可以認為如果平行超平面間的距離越大,那么總誤差就越小。最開始的支持向量機技術主要是設計用作簡單二分類,在二維平面中找到最大間隔的超平面簡單劃分+1和-1倆類數據,我們使用一組樣本{(xi,y舉個例子,就像下面這個圖像,在1962年提出的線性支持向量機中有兩個概念:“硬間隔”和“軟間隔”。硬間隔簡單理解就是指一刀切分兩半。軟間隔就是用線將數據圍出來。假設我們的訓練數據集的屬性良好并且線性可分,那么我們就可以尋求到一個最優的超平面將訓練數據集嚴格地劃分開來,將其分為兩類(可以想象成一個平板從中間進行切分)。我們找兩個這樣的超平面,它們如果滿足兩個條件--兩者平行和兩者之間距離最大(即下圖中的兩條虛線)。兩個超平面上的樣本x稱為“支持向量”。“最大間隔超平面”(也就是分類器)是兩超平面的平均值。我們定義這兩個超平面間的區域為“間隔”。在這種情況下它就是“硬間隔”(可理解為一根堅硬不可彎折的曲線)。其中最大間隔超平面可以表示為:W?X+b=0。兩個超平面可以分別表示為:W?X+b=1,W?X+b=?1。基礎分類圖如下圖所示:圖4-1SVM二分類圖支持向量機可根據數據集的屬性分成三種,分別是數據集線性可分,數據集線性不可分和數據集非線性,這三種模型解決的問題由易到難。,應用場合也各自不同,如下圖可直觀看出三種模型的區別所在:
圖4-2三種SVM模型圖使用支持向量機算法主要優點如下:首先這種算法是針對于小樣本數據集,屬于分類算法的一種,也就是樣本數目不大的數據集,其目標是基于已獲得數據的基礎上尋求最優解決方案,并非樣本數量趨于無窮時的最優解決方案。其次算法可選擇軟硬間隔進行分類,借用拉格朗日乘數法來解決局部極值問題,最終為求解一個二次凸規劃問題。最終算法可以將所需要解決的難題通過變換關系投影至到一個另一個空間中,在這個空間中用原先空間中不足以表示的方法來解決原空間中的問題。SVM算法的特殊處理方式使得在泛化能力上表現良好,對于特征值維數過大也能很好的解決,特別值得注意的是支持向量機算法復雜性與數據維數無關.4.2SVM在程序中具體應用首先對PCA降維后的特征值數據集進行隨機排列以保證訓練和測試的隨機性,然后劃分訓練集和測試集,本次課題所研究的數據集總數為72個,故選擇前60個為訓練集,后12個為測試集。由于劃分后的數據集其特征值相差較大且含有正負數值,于是再對其進行歸一化處理操作,將所有特征值轉換至(0,1)區間內,方便后面進行的SVM模型建立。代碼具體操作如下圖所示:圖4-2數據處理圖對于具體的SVM算法本次課題我選擇了libsvm軟件包,它是由林智仁教授工作室開發的一款功能很強大,簡單且實用性高的SVM軟件包。此工具包MATLAB沒有自帶,所以需要自己去搜索下載并進行相關環境的配置。首先在開源網站上下載此功能包然后在MATLAB中進行相關路徑的設置,于環境進行配置成功后選擇自帶的編譯器進行編譯,相關操作成功后在MATLAB的左方截面會顯示出如下的幾個mexw64文件:圖4-3配置完成文件圖在MATLAB如上方顯示成功后就可以使用工具包中相關函數功能了。Libsvm工具包詳細說明如下圖所示:圖4-3libsvm工具箱函數使用說明圖圖4-4libsvm工具箱參數說明圖安裝完工具包后對前面數據進行處理好的數據集進行模型的建立,然后用建立好的算法模型對測試集進行結果預測,并將預測所得結果通過圖表形式表現出來,本次課題做了測試集的實際分類和預測分類圖以及SVM測試集的預測誤差兩個圖形,能直觀看出預測結果以及誤差率。在支持向量機算法中有兩個很重要的參數C與g。數據的容忍度隨著C值越高而降低,也就是越不容易進行容錯,在這種情況下過擬合問題會經常出現。反之如果C值越小,代表容忍度越高,對誤差的容錯率越高,在這種情況下欠擬合問題會經常出現。g參數是在選擇RBF核函數(Radialbasisfunction徑向基函數)作為核函數后,由該函數自帶的一個參數。該參數隱含地決定了數據映射到新的特征空間后的分布,g值如果越大代表著模型中的支持向量數目就越少,反之g值越小代表著模型中的支持向量數目就越多。其中尋找最佳c,g的思想仍然是讓c和g在一定范圍內(比如c=2^(-5),c=2^(-4),…,2^5,g=2^(-5),2^(-4),…,2^(5)),然后用交叉驗證的方法尋找到準確率最高的c和g參數,在本課題中SVM模型建立過程中的懲罰參數cost以及核參數g為調試所得。下圖為SVM算法實現代碼:圖4-4SVM算法實現以及結果繪圖代碼在這里有一個需要的注意的地方,因為在上式代碼中,通過libsvmtrain函數所給出的accuracy實際上輸出包含三個元素,第一個元素是分類的準確率百分比數值,第二個元素是支持向量機做回歸預測的均方誤差,第三個元素是支持向量機做回歸預測的相關系數,本次研究中我們只需要第一個準確率的數值進行結果分析即可,所以在后續繪圖代碼中所書寫的應該是accuracy(1)。其次對于c和g參數的選取也有注意的地方,舉個例子比如在訓練函數中規定了-g核參數為0.1,在之后的運用中就不需要對其進行定義了,因為這樣做會出現報錯,系統會告訴你找不到-g參數的存在,這是因為是在SVM訓練模型也就是運用svmtrain函數之后會MATLAB系統會給出一個模型model,如果在svmpredict中聲明并使用了這個model,所以這個model中其實就已經包含了所有的訓練參數了,正因如此svmpredict中沒有這個參數。下圖為一次代碼運行之后分類準確率為83.3%的測試集的實際分類和預測分類圖以及SVM測試集的預測誤差圖(1為分類正確,0為分類錯誤):圖4-5測試集的實際分類圖圖4-6SVM測試集的預測誤差圖5肺音分類結果分析5.1SVM程序結果分析前面已經進行了數據預處理、SVM模型的建立以及測試結果的步驟,但訓練與測試的數據集有限,經過多次程序修改與測試后發現測試所得數據準確率在83.3%,58.3%,66.6%三種不同的準確率之間徘徊,同時在修改代碼測試過程中也發現了一種固定劃分訓練集和測試集的方法可以使準確率穩定在75%,劃分代碼具體如下圖所示:圖5-1劃分測試集和訓練集圖5-2預測分類圖圖5-3樣本預測誤差5.2結果進行詳細顯示對于圖表性結果顯示雖然觀察上更直觀,但不易分辨出具體是哪一個分類有錯誤,為了能進一步詳細識別分類結果,對于詳細分類結果以下列代碼方式進行顯示:圖5-4顯示代碼圖5-5詳細顯示形式
結束語21世紀計算機技術正發展的如日中天,幾乎在哪里都能看到它的身影,它在當今社會中已經深深融入到了人們的日常生活之中,小到人手一部的手機,大到衛星上天甚至火箭發射。如今在新冠肺炎肆意全球的大背景下,全球人民攜手共戰疫情,醫院診所位置供不應求,但人力物力畢竟有限,所以計算機輔助診斷技術的研究是有著很大潛力以及意義的,而肺音分類技術和機器學習技術的迅猛發展給基于機器學習的人工智能輔助診斷研究開拓了廣闊的市場。可以想象在不久后的將來,便捷易操作的診斷系統會逐漸普及大眾走入尋常百姓家,成為判斷人民身體健康中不可缺少的一部分,對人們的生活習慣和觀念產生重大的影響。其次,肺音分類技術的運用和發展將大大的促進醫學領域的進步和發展,同時此項技術對于其他領域也有可印證提高之處,人工智能輔助診斷技術對于減少社會負擔和提高工作效率有著很大的作用,提高了普通老百姓的生活安全保障,也促進了生產力發展,對當今社會的普遍改善都有一定的意義。但還應大力發展全球數據庫,做到全球資源實時共享。總之,機器學習的發展和推廣,是對人們生活和經濟的發展有著重大意義的,它不僅對于科學技術鄰域有著巨大的推動作用,它的發展也必然給我們社會日常生活的各個方面帶來重大改變。學習過程往往是乏味無聊的,開始一個未知領域的學習都會充滿迷茫和害怕,但只有堅持到最后才會發覺之前所作并非無用之事。我自己選擇這個課題方向的時候其實也很迷茫,但我想挑戰一下我自己迷茫且未知的領域,畢竟人的成長也總是在和未知作斗爭,通過自己查閱資料和不斷的詢問相關方面的高手,我也逐漸對自己做的課題有了一個大致的了解與心得體會,并且我對該專業方向產生了很大的興趣,我堅信本次認真完成畢業論文將會使我終身受益,不僅讓我在知識層面上有所提升,同樣也讓我學到了很多有用的技巧,我相信這次完成畢業論文的經歷一定對于我今后的學習生活有著很大的影響作用,多年以后回想起來也必定會為之感到欣慰。參考文獻萇飛霸、尹軍、何慶華、畢玉田.病理性肺音信號的分析識別方法[J].中國醫學物理學雜志.
2016,33(07):739-742+746.高鳴蕾.基于EMD的肺音信號去噪及特征提取方法研究[D].江蘇:江蘇大學,2019.王文淵;
閆平凡.肺音研究綜述[J]北京生物醫學工程.
1992,(02)鄭明杰.基于機器學習的肺音分類技術的研究進展.[J]計算機科學.
2015,42(12)姚小靜、王洪、李燕、崔建國.肺音信號分析及其識別方法的研究進展.[J]重慶理工大學學報(自然科學).
2013,27(12)周冬生.肺音信號的特征提取于模式識別.[D].山東:山東大學.鄧博雅.基于夜間音頻信號的睡眠分期算法[D].南京理工大學,2018.陳少瓊.心肺音頻信號的分類和應用[D].華南理工大學,2016.陳佩.主成分分析法研究及其在特征提取中的應用[D].陜西師范大學,2014.朱志婷.基于SVM的音頻分類理論研究及應用[D].華南理工大學,2012.張松蘭.支持向量機的算法及應用綜述[J].江蘇理工學院學報,2016,22(02):14-17+21.陳佩.主成分分析法研究及其在特征提取中的應用[D].陜西師范大學,2014.張玉新,趙洋,陶佳.基于音頻特性的西瓜成熟度無損檢測技術研究[J].河北農業大學學報,2011,34(02):114-118.鄭怡文.典型的音頻分類算法[J].計算機與現代化,2007(08):59-63./ljl86400/article/details/86686991DemirFatih,SengurAbdulkadir,BajajVarun.Convolutionalneuralnetworksbasedefficientapproachforclassificationoflungdiseases.[J].Healthinformationscienceandsystems,2020,8(1).LungSoundClassificationUsingSnapshotEnsembleofConvolutionalNeuralNetworks.[J].AnnualInternationalConferenceoftheIEEEEngineeringinMedicineandBiologySociety.IEEEEngineeringinMedicineandBiologySociety.AnnualInternationalConference,2020,2020.S.Don.RandomSubsetFeatureSelectionandClassificationofLungSound[J].ProcediaComputerScience,2020,167.NishiShahnajHaider,BikeshKumarSingh,R.Periyasamy,AjoyK.Behera.RespiratorySoundBasedClassificationofChronicObstructivePulmonaryDisease:aRiskStratificationApproachinMachineLearningParadigm[J].JournalofMedicalSystems,2019,43(8).HaiderNishiShahnaj,SinghBikeshKumar,PeriyasamyR,BeheraAjoyK.RespiratorySoundBasedClassificationofChronicObstructivePulmonaryDisease:aRiskStratificationApproachinMachineLearningParadigm.[J].Journalofmedicalsystems,2019,43(8).QingZhangChen,YuZhengChen,CongLingFan,FanYang,PengWang,YanJingLei.ResearchonNodeLocalizationAlgorithminWSNBasingMachineLearning[J].AdvancedMaterialsResearch,2013,2534.ShaharumSM,SundarajK,PalaniappanR.Trachealsoundreliabilityforwheezedatacollectionmethod:Areview[C]//2012IEEEInternationalConferenceonControlSystem,ComputingandEngineering(ICCSCE).IEEE,2012:264-267KaislaT,RajalaH,KatilaT.Cracklesinpatientswithfibrosing.alveolitis,bronchiectasis,COPD,andheartfailure[J].CHESTJournal,1991.99(5);1076-1083
附錄%初始化程序
closeall;
clear;
clc;
formatcompact;%壓縮空格path=cd;%獲取當前的工作路徑
%健康的音頻信息
au=audioread(strcat(cd,'\4000HZ\Healthy\1(1).wav'));%讀取音頻尺寸
[auRow,auCol]=size(au);
HealthyData=zeros(35,auRow*auCol);%初始化
LabelData=zeros(35,1);%標簽矩陣
fori=1:35
LabelData(i,1)=1;%標簽
helth=audioread(strcat(cd,'\4000HZ\Healthy\1(',num2str(i),').wav'));%讀取音頻
helth=helth(:)';%向量化
HealthyData(i,1:length(helth))=helth;%存儲聲音特征信息
end
%患病的音頻信息
au=audioread(strcat(cd,'\4000HZ\Pneumonia\1(1).wav'));%讀取音頻尺寸
[auRow,auCol]=size(au);
PneumoniaData=zeros(37,auRow*auCol);%初始化
PneumoniaLabelData=zeros(35,1);%標簽矩陣
fori=1:37
PneumoniaLabelData(i,1)=2;%標簽
ill=audioread(strcat(cd,'\4000HZ\Pneumonia\1(',num2str(i),').wav'));%讀取音頻
ill=ill(:)';%向量化
PneumoniaData(i,1:length(ill))=ill;%存儲聲音特征信息
end%特征信息
input=[HealthyData;PneumoniaData];
%標簽信息
output=[LabelData;PneumoniaLabelData];dimension=60;%降維的維度
[r,~]=size(input);%特征的維度
%樣本均值
meanVec=mean(input);
%計算協方差矩陣的轉置covMatT
Z=(input-repmat(meanVec,r,1));
covMatT=Z*Z';
%計算covMatT的前dimension個本征值和本征向量
[V,~]=eigs(covMatT,dimension);
%得到協方差矩陣(covMatT)'的本征向量
V=Z'*V;
%本征向量歸一化為單位本征向量
fori=1:dimension
V(:,i)=V(:,i)/norm(V(:,i));
end
%線性變換(投影)降維至k維
pca_input=Z*V;
input=pca_input;%降維后的特征輸入
N=length(output);%全部樣本數目
testNum=12;%設定測試樣本數目
trainNum=N-testNum;%計算訓練樣本數目%隨機抽取
id=randperm(N);
input=input(id,:);
output=output(id,:);
%訓練集、測試集
input_train=input(1:trainNum,:);
output_train=output(1:trainNum);
input_test=input(trainNum+1:trainNum+testNum,:);
output_test=output(trainNum+1:trainNum+testNum);[mtrain,ntrain]=size(input_train);
[mtest,ntest]=size(input_test);
dataset=[input_train;input_test];
%mapminmax為MATLAB自帶的歸一化函數
[dataset_scale,ps]=mapminmax(dataset',0,1);%歸一化到01之間
dataset_scale=dataset_scale';
input_train=dataset_scale(1:mtrain,:);
input_test=dataset_scale((mtrain+1):(mtrain+mtest),:);model=libsvmtrain(output_train,input_train,'-c800-g0.1');[predict_label,accuracy]=libsvmpredict(output_test,input_test,model);
%按類型升序
[output_test,index]=sort(output_test);
predict_label=predict_label(index);
error=predict_label-output_test;%預測值和真實值的誤差Accuracy=66.6667%(8/12)(classification)figure
plot(output_test,'bo-','linewidth',1.2)
holdon
plot(predict_label,'r*-','linewidth',1.2)
legend('期望類型','預測類型')
xlabel('測試樣本編號'),ylabel('標簽類型')
title({'測試集的實際分類和預測分類圖';['Accuracy=',num2str(accuracy(1)),'%']},'FontSize',12);
set(gca,'fontsize',12)
figure
plot(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 傭金合同樣本口罩
- 買車位不給合同樣本
- 公廁管護合同樣本
- ktv店鋪轉讓合同樣本
- 保險賠償要合同標準文本
- 吉林省吉林市2022屆高三下學期第三次調研考試 理綜試題 附答案
- 個人醫院轉讓合同樣本
- 假發店加盟合同樣本
- 乙方驗收合同標準文本
- 介紹評估居間合同標準文本
- 2025年高考物理復習備考策略講座
- 管理學基礎-形考任務三-國開-參考資料
- 2024-2025學年北師大版七年級數學上冊期末復習壓軸題12個(84題)含答案
- 2025年3月版安全環境職業健康法律法規標準文件清單
- T∕CEC 442-2021 直流電纜載流量計算公式
- 第二十一章傳導熱療法講解
- 2023年5月7日內蒙古事業單位聯考職業能力傾向測驗A類真題答案解析
- 管道溝槽開挖施工方案
- 《入職心得分享》課件
- 中職班級工作
- 2024.8.1十七個崗位安全操作規程手冊(值得借鑒)
評論
0/150
提交評論