謝松+周衛+李文林+楊秦
摘要:基于VB和MATLAB混合編程技術,在自動分詞系統與共詞分析的基礎上,設計開發了可應用于中醫藥等領域的數據可視化與數據挖掘軟件系統,對346個中醫外用復方的組成成分與主治病癥進行統計分析與數據挖掘,為相關領域的研究提供快捷便利的分析工具。關鍵詞:VB;MATLAB;數據可視化;數據挖掘doi: 10.3969/j.issn.2095-5707.2014.02.003A Research on Data Visualization and Data Mining Software Based on VB and MATLAB Hybrid ProgrammingXie Song, Zhou Wei, Li Wenlin*, Yang Qin(Nanjing University of Traditional Chinese Medicine, Nanjing Jiangsu 210023, China)Abstract: The research designed and developed a data visualization and data mining software which can be applied in Traditional Chinese Medicine(TCM) field based on VB and MATLAB hybrid programming, with the development of automatic segmentation system and co-word analysis. It statistically analyzed composition and effects of 346 TCM compounds for external use, which can be used as a convenient analysis tool in related study field.Key words: VB; MATLAB; data visualization; data mining 數據挖掘可以從大量數據中發現隱藏的特定模式和規律,從而可以為商業活動、科學探索和醫學研究等諸多領域提供必需的信息知識。數據與信息知識之間的巨大差距迫切需要系統地開發數據挖掘工具,幫助實現將大量的數據轉化為知識財富。擁有幾千年文化積淀的傳統中醫藥學積累了豐富的經驗,擁有大量的文獻。中醫藥系統是一個非線性、多維、復雜而龐大的系統,將數據挖掘技術應用于中醫藥領域中的相關數據進行整理、提取和挖掘,可以更好地獲取其中蘊藏的知識精華,加速中醫藥學的前進步伐。VB是Windows環境下最快捷和易用的可視化集成開發工具,通過它可以編寫出具有各種風格且界面友好的軟件產品。MATLAB是一套集數值分析、矩陣運算、信號處理和圖形顯示于一體的高性能數學軟件,計算能力十分突出。由于MATLAB編寫復雜的人基金項目:南京中醫藥大學哲學社會科學基金(11XSK15);南京中醫藥大學青年自然科學基金(11XZR19)第一作者:謝松,助理館員,研究方向:中醫藥數據分析與挖掘。E-mail:phoenixtech@163.com*通訊作者:李文林,研究館員,研究方向:中醫藥數據分析與挖掘。E-mail: njutcmli@126.com機交換界面的功能相對較弱,而VB提供的計算能力和繪圖函數有限。因此,本研究設計在VB環境下調用MATLAB,充分發揮各自的優勢,開發應用于中醫藥領域的數據可視化與聚類分析系統。1 VB與MATLAB混合編程的幾種方法VB與MATLAB進行混合編程,有以下5種方法,分別具體敘述如下:1.1 采用動態數據交換(DDE)技術DDE是在Windows環境下支持客戶/服務器(client/server)計算模式重要技術之一。VB支持DDE客戶端功能,MATLAB提供DDE服務功能。VB應用程序首先通過確定服務器名和主題建立與MATLAB的DDE會話,服務器名和主題的唯一確定了這次會話,在會話期間VB應用程序作為客戶端,MATLAB作為服務器端,客戶端與服務器端可以就確定的條目(Item)交換數據[1]。1.2 采用ActiveX技術ActiveX技術是微軟公司提供的一種用于模塊集成的新的協議,Activex部件是VB工具箱的補充。MATLAB也支持Activex技術,即可以在MATLAB環境下運行其他程序的Activex部件,也可以在其他程序中運行MATLAB的Activex部件。因此,在VB中利用Activex自動化接口可將MATLAB作為VB的一個Activex部件來調用。這樣就可以在VB程序中調用MATLAB的命令,向MATLAB傳送或從MATLAB中接收數據,本研究采用的即為這種方式,在第三節中將詳細說明如何應用ActiveX技術調用MATLAB。1.3 將M文件編譯為DLL文件通過Matcom工具把MATLAB編寫的函數(M文件)編譯為VB可以調用的DLL文件。Matcom是一個從MATLAB到C++的編譯器,它借助C++編譯器將MATLAB下的M文件編譯為可被VB調用的DLL動態鏈接庫或者是獨立的可執行文件。這樣大大提高了程序的運行效率,也降低了對系統資源的占用[2]。1.4 將M文件編譯為EXE文件MATLAB的M文件不能直接在VB中調用,可利用MCC將M文件直接編譯成可執行的EXE文件,然后在VB中聲明3個API函數,最后使用shell命令即可實現VB與MATLAB的無縫集成[3]。1.5 使用MatrixVB插件MatrixVB是MathWorks公司專門為VB提供的編程接口,它實際上是一個內化到VB中的功能豐富的數學函數庫,實現編程也很簡單,在計算機上安裝MatrixVB后,啟動VB,建立一個新的程序,打開工程/引用菜單項,選中Matrix項,就可以在VB直接調用MATLAB函數來進行程序的設計[4]。2 VB通過ActiveX調用MATLAB在VB中創建MATLAB的ActiveX對象后,就可以使用這個對象所包含的各種方法,實現對MATLAB的調用。首先創建ActiveX對象:Dim Mlab as ObjectSet Mlab= CreateObject ("MATLAB. Applica- tion")常用的Mlab.Application 方法有5個。2.1 Execute([in] BSTR Command)方法BSTR表示寬字符串類型,該方法接收字符串命令,將調用MATLAB,執行一條由Command字符串所決定的一條MATLAB命令,同時返回命令的執行情況,如在VB的文本框Text1中輸入MATLAB語句,在命令按鈕中輸入如下程序即可執行查看結果。也可以在VB中將MATLAB語句賦值給變量,然后傳遞給MATLAB執行。Dim Mlab as objectDim Result as stringSet Mlab= CreateObject ("MATLAB.Applica- tion")Cmd= Text1.Textendprint
Result= Mlab.Execute (Cmd)2.2 GetFullMatrix方法GetFullMatrix ([in] BSTR Name, [in] BSTR Workspace, [in, out] SAFEARRAY (double) * pr,[in, out] SAFEARRAY (double) * pi)GetFullMatrix方法將MATLAB中的一個矩陣變量傳送到VB中的一個一維或二維數組中,其中Name指定了MATLAB中的矩陣變量名,Workspace指定了該矩陣所在的MATLAB所在的工作區,pr是VB程序中的實部,pi是VB程序中的虛部。2.3 PutFullMatrix方法PutFullMatrix([in] BSTR Name, [in] BSTR Workspace,[in, out] SAFEARRAY (double) * pr,[in, out] SAFEARRAY (double) * pi)PutFullMatrix方法是將VB程序中的一個一維或二維數組傳遞到指定的MATLAB空間,各參數的意義和調用方法與GetFullMatrix方法類似。2.4 Void Minimize Command Window( )方法該方法使MATLAB的命令窗口最小化。2.5 Void Maximum Command Window( )方法該方法使MATLAB的命令窗口最大化。3 軟件的系統設計與實現3.1 系統數據庫與數據來源本研究前期根據《中華人民共和國藥典(2005版)》搜集整理了中醫常用的141個單味藥信息,包括藥物名稱、漢語拼音、基原、性狀、鑒別、用途、炮制方法、性味、歸經、功效、主治、用法用量、用藥禁忌等多個字段,以及346個外用復方,包含復方名稱、別名、處方來源、藥物組成、加減、功效、主治、制備方法、用法用量、用藥禁忌、臨床應用、藥理、各家論述等。并根據復方劑型、主治的病癥規范統一,存進SQL Server數據庫,作為實驗數據。數據庫詳細設計在此略過。3.2 模塊組成數據可視化與數據挖掘軟件的研究主要包括兩個功能模塊,中醫外用藥數據庫模塊以及數據可視化與數據挖掘模塊。其中,主要的數據可視化與數據挖掘模塊如圖1所示。3.2.1 數據預處理模塊 對需可視化和數據挖掘的源數據進行規范化處理,處理完成后存進數據庫。文本分詞系統根據《全國中草藥匯編》所建的詞表對特定的文獻資料進行分詞處理,本研究針對中藥外用藥領域的復方組成成分,使用逆向最長匹配算法,切分出復方的各個藥物組成,并進行統計處理,分詞結果可以作為可視化與數據挖掘的對象之一。 圖1 系統功能模塊圖3.2.2 數據可視化模塊 對數據對象進行二維或三維可視化顯示,數據對象來源不限,可以為既有數據,或新處理的分詞結果。根據適用對象的不同,可視化的方式也可繪出柱狀圖、餅狀圖、散點圖、火柴桿圖、面積圖、階梯圖等多種形式。3.2.3 數據挖掘模塊 系統采用基于共詞分析的聚類分析方法,對現有數據進行高頻字段統計,計算得出共詞矩陣,通過計算Ochiia系數,將共詞矩陣轉化為相似矩陣和相異矩陣,最后進行聚類分析,畫出聚類樹形圖。3.3 數據可視化與聚類分析示例3.3.1 二維柱狀圖 在程序中調用MATLAB繪制二維柱狀圖的代碼如下,生成的圖形如圖2所示。Set Mlab = CreateObject ("MATLAB.Applica- tion")Mlab.Execute (cmdMATLAB) 前面已經給字符串變量cmdMATLAB賦值,通過MATLAB執行命令創建數據矩陣或向量。Mlab.Execute ("bar(X),'stacked'") 通過函數bar()繪制二維柱狀圖。Mlab.Execute ("title('" & vXlabel & "柱狀圖', 'FontSize',15 )") 給圖形添加標題,設置字體字號。Mlab.Execute ("Ylabel('\it " & vYlabel &", FontSize',12 )")Mlab.Execute ("Xlabel('" & vXlabel & "序號 , 'FontSize',12 )") 給圖形縱坐標、橫坐標添加標簽,設置字體字號。Mlab.Execute ("set (gca, xtick, 1︰1︰" & vRcnt & ")") 給坐標軸添加向量刻度。 圖2 復方劑型統計二維柱狀圖從圖2可以直觀地看出,在整理出的346個外用復方中,采用散劑作為劑型的復方有128個,膏劑有113個,丸劑有52個,液劑有38個,餅劑有6個,片劑有2個,霜劑只有1個,其他不可直接判斷是何種劑型的復方有6個。3.3.2 三維火柴桿圖 與繪制柱狀圖類似,給變量cmdMATLAB賦值之后傳遞給MATLAB,創建數據矩陣或向量,即可通過命令Mlab.Execute ("stem3(X)")繪制三維火柴桿圖,如圖3所示。 圖3 復方劑型統計三維火柴桿圖如圖3所示,數據來源也是346個外用復方,然后根據劑型繪制出三維火柴桿圖。3.3.3 聚類分析 本研究中的數據挖掘是基于共詞研究的聚類分析。聚類分析法對于共詞關系網絡中的詞與詞之間的距離進行數學運算分析,將距離較近的主題詞聚集起來,形成一個個概念相對獨立的類團,使得類團內屬性相似性最大,類團間相似性最小[5]。本研究對于中藥復方中的藥材進行切分統計之后,再根據復方功效總結其對應的主治病癥,一起進行高頻關鍵詞統計,并計算得出共詞矩陣。再利用Ochiia系數計算出相似矩陣和相異矩陣,并作聚類分析,可以得知針對某些病癥的用藥規律。 圖4 中藥外用復方組成藥材主治聚類分析圖在高頻關鍵詞中按頻次從高到低的順序,排前30位的依次是冰片、白礬、乳香、雄黃、輕粉、瘡瘍、沒藥、麝香、黃柏、黃連、白芷、濕疹、當歸、甘草、石膏、朱砂、癰疽、青黛、大黃、龍骨、血竭、防風、五倍子、骨病關節病、硫黃、細辛、潰瘍、川芎、體癬、白及。在圖4中對應的編號從1依次到30。將這些關鍵詞進行聚類分析,結果如圖4所示。以圖舉例來說,編號15、17、20、30即表示石膏、癰疽、龍骨、白及,較早地聚為一類,很好地解釋了在治療癰疽時的用藥特點。4 小結本研究采用VB和MATLAB混合編程開發的數據可視化與數據挖掘軟件,提供友好的用戶交互界面,并以數據預處理、自動分詞切詞處理、共詞分析研究等完整的流程,進行外用復方藥材與病癥的聚類分析。應用此軟件的優勢在于,以前復雜煩瑣的依據文獻內容人工進行藥材摘錄、統計等工作,現在可以用程序自動完成,大大簡化了不必要的勞動,并且對數據進行分析挖掘,將結果以多種形式可視化地展現出來,為開發中醫藥和其他領域的應用程序積累了經驗,并為科研工作提供了有力的技術支持與新的方法。參考文獻[1]崔桂彬,王汝霖,李春梅,等.基于VB與MATLAB的圖像處理軟件設計[J].微計算機信息,2006,22(30):260-262.[2]譚炎,張凌燕.MATLAB與VB混合編程技術研究[J].微計算機信息,2006,22(15):247-249.[3]陳麗君,任文濤,趙萍.基于VB和MATLAB的苗田圖像實時處理軟件設計[J].農機化研究,2009,31(11):145-147.[4]盧振,曹屹,范永.基于VB與MATLAB混合編程數據庫圖形顯示方法[J].制導與引信,2009,30(3):36-40.[5]黃詠梅.讀者需求分析中的數據挖掘技術[J].大學圖書情報學刊,2006,24(4):48-50.(收稿日期:2013-10-24,編輯:魏民)endprint
Result= Mlab.Execute (Cmd)2.2 GetFullMatrix方法GetFullMatrix ([in] BSTR Name, [in] BSTR Workspace, [in, out] SAFEARRAY (double) * pr,[in, out] SAFEARRAY (double) * pi)GetFullMatrix方法將MATLAB中的一個矩陣變量傳送到VB中的一個一維或二維數組中,其中Name指定了MATLAB中的矩陣變量名,Workspace指定了該矩陣所在的MATLAB所在的工作區,pr是VB程序中的實部,pi是VB程序中的虛部。2.3 PutFullMatrix方法PutFullMatrix([in] BSTR Name, [in] BSTR Workspace,[in, out] SAFEARRAY (double) * pr,[in, out] SAFEARRAY (double) * pi)PutFullMatrix方法是將VB程序中的一個一維或二維數組傳遞到指定的MATLAB空間,各參數的意義和調用方法與GetFullMatrix方法類似。2.4 Void Minimize Command Window( )方法該方法使MATLAB的命令窗口最小化。2.5 Void Maximum Command Window( )方法該方法使MATLAB的命令窗口最大化。3 軟件的系統設計與實現3.1 系統數據庫與數據來源本研究前期根據《中華人民共和國藥典(2005版)》搜集整理了中醫常用的141個單味藥信息,包括藥物名稱、漢語拼音、基原、性狀、鑒別、用途、炮制方法、性味、歸經、功效、主治、用法用量、用藥禁忌等多個字段,以及346個外用復方,包含復方名稱、別名、處方來源、藥物組成、加減、功效、主治、制備方法、用法用量、用藥禁忌、臨床應用、藥理、各家論述等。并根據復方劑型、主治的病癥規范統一,存進SQL Server數據庫,作為實驗數據。數據庫詳細設計在此略過。3.2 模塊組成數據可視化與數據挖掘軟件的研究主要包括兩個功能模塊,中醫外用藥數據庫模塊以及數據可視化與數據挖掘模塊。其中,主要的數據可視化與數據挖掘模塊如圖1所示。3.2.1 數據預處理模塊 對需可視化和數據挖掘的源數據進行規范化處理,處理完成后存進數據庫。文本分詞系統根據《全國中草藥匯編》所建的詞表對特定的文獻資料進行分詞處理,本研究針對中藥外用藥領域的復方組成成分,使用逆向最長匹配算法,切分出復方的各個藥物組成,并進行統計處理,分詞結果可以作為可視化與數據挖掘的對象之一。 圖1 系統功能模塊圖3.2.2 數據可視化模塊 對數據對象進行二維或三維可視化顯示,數據對象來源不限,可以為既有數據,或新處理的分詞結果。根據適用對象的不同,可視化的方式也可繪出柱狀圖、餅狀圖、散點圖、火柴桿圖、面積圖、階梯圖等多種形式。3.2.3 數據挖掘模塊 系統采用基于共詞分析的聚類分析方法,對現有數據進行高頻字段統計,計算得出共詞矩陣,通過計算Ochiia系數,將共詞矩陣轉化為相似矩陣和相異矩陣,最后進行聚類分析,畫出聚類樹形圖。3.3 數據可視化與聚類分析示例3.3.1 二維柱狀圖 在程序中調用MATLAB繪制二維柱狀圖的代碼如下,生成的圖形如圖2所示。Set Mlab = CreateObject ("MATLAB.Applica- tion")Mlab.Execute (cmdMATLAB) 前面已經給字符串變量cmdMATLAB賦值,通過MATLAB執行命令創建數據矩陣或向量。Mlab.Execute ("bar(X),'stacked'") 通過函數bar()繪制二維柱狀圖。Mlab.Execute ("title('" & vXlabel & "柱狀圖', 'FontSize',15 )") 給圖形添加標題,設置字體字號。Mlab.Execute ("Ylabel('\it " & vYlabel &", FontSize',12 )")Mlab.Execute ("Xlabel('" & vXlabel & "序號 , 'FontSize',12 )") 給圖形縱坐標、橫坐標添加標簽,設置字體字號。Mlab.Execute ("set (gca, xtick, 1︰1︰" & vRcnt & ")") 給坐標軸添加向量刻度。 圖2 復方劑型統計二維柱狀圖從圖2可以直觀地看出,在整理出的346個外用復方中,采用散劑作為劑型的復方有128個,膏劑有113個,丸劑有52個,液劑有38個,餅劑有6個,片劑有2個,霜劑只有1個,其他不可直接判斷是何種劑型的復方有6個。3.3.2 三維火柴桿圖 與繪制柱狀圖類似,給變量cmdMATLAB賦值之后傳遞給MATLAB,創建數據矩陣或向量,即可通過命令Mlab.Execute ("stem3(X)")繪制三維火柴桿圖,如圖3所示。 圖3 復方劑型統計三維火柴桿圖如圖3所示,數據來源也是346個外用復方,然后根據劑型繪制出三維火柴桿圖。3.3.3 聚類分析 本研究中的數據挖掘是基于共詞研究的聚類分析。聚類分析法對于共詞關系網絡中的詞與詞之間的距離進行數學運算分析,將距離較近的主題詞聚集起來,形成一個個概念相對獨立的類團,使得類團內屬性相似性最大,類團間相似性最小[5]。本研究對于中藥復方中的藥材進行切分統計之后,再根據復方功效總結其對應的主治病癥,一起進行高頻關鍵詞統計,并計算得出共詞矩陣。再利用Ochiia系數計算出相似矩陣和相異矩陣,并作聚類分析,可以得知針對某些病癥的用藥規律。 圖4 中藥外用復方組成藥材主治聚類分析圖在高頻關鍵詞中按頻次從高到低的順序,排前30位的依次是冰片、白礬、乳香、雄黃、輕粉、瘡瘍、沒藥、麝香、黃柏、黃連、白芷、濕疹、當歸、甘草、石膏、朱砂、癰疽、青黛、大黃、龍骨、血竭、防風、五倍子、骨病關節病、硫黃、細辛、潰瘍、川芎、體癬、白及。在圖4中對應的編號從1依次到30。將這些關鍵詞進行聚類分析,結果如圖4所示。以圖舉例來說,編號15、17、20、30即表示石膏、癰疽、龍骨、白及,較早地聚為一類,很好地解釋了在治療癰疽時的用藥特點。4 小結本研究采用VB和MATLAB混合編程開發的數據可視化與數據挖掘軟件,提供友好的用戶交互界面,并以數據預處理、自動分詞切詞處理、共詞分析研究等完整的流程,進行外用復方藥材與病癥的聚類分析。應用此軟件的優勢在于,以前復雜煩瑣的依據文獻內容人工進行藥材摘錄、統計等工作,現在可以用程序自動完成,大大簡化了不必要的勞動,并且對數據進行分析挖掘,將結果以多種形式可視化地展現出來,為開發中醫藥和其他領域的應用程序積累了經驗,并為科研工作提供了有力的技術支持與新的方法。參考文獻[1]崔桂彬,王汝霖,李春梅,等.基于VB與MATLAB的圖像處理軟件設計[J].微計算機信息,2006,22(30):260-262.[2]譚炎,張凌燕.MATLAB與VB混合編程技術研究[J].微計算機信息,2006,22(15):247-249.[3]陳麗君,任文濤,趙萍.基于VB和MATLAB的苗田圖像實時處理軟件設計[J].農機化研究,2009,31(11):145-147.[4]盧振,曹屹,范永.基于VB與MATLAB混合編程數據庫圖形顯示方法[J].制導與引信,2009,30(3):36-40.[5]黃詠梅.讀者需求分析中的數據挖掘技術[J].大學圖書情報學刊,2006,24(4):48-50.(收稿日期:2013-10-24,編輯:魏民)endprint
Result= Mlab.Execute (Cmd)2.2 GetFullMatrix方法GetFullMatrix ([in] BSTR Name, [in] BSTR Workspace, [in, out] SAFEARRAY (double) * pr,[in, out] SAFEARRAY (double) * pi)GetFullMatrix方法將MATLAB中的一個矩陣變量傳送到VB中的一個一維或二維數組中,其中Name指定了MATLAB中的矩陣變量名,Workspace指定了該矩陣所在的MATLAB所在的工作區,pr是VB程序中的實部,pi是VB程序中的虛部。2.3 PutFullMatrix方法PutFullMatrix([in] BSTR Name, [in] BSTR Workspace,[in, out] SAFEARRAY (double) * pr,[in, out] SAFEARRAY (double) * pi)PutFullMatrix方法是將VB程序中的一個一維或二維數組傳遞到指定的MATLAB空間,各參數的意義和調用方法與GetFullMatrix方法類似。2.4 Void Minimize Command Window( )方法該方法使MATLAB的命令窗口最小化。2.5 Void Maximum Command Window( )方法該方法使MATLAB的命令窗口最大化。3 軟件的系統設計與實現3.1 系統數據庫與數據來源本研究前期根據《中華人民共和國藥典(2005版)》搜集整理了中醫常用的141個單味藥信息,包括藥物名稱、漢語拼音、基原、性狀、鑒別、用途、炮制方法、性味、歸經、功效、主治、用法用量、用藥禁忌等多個字段,以及346個外用復方,包含復方名稱、別名、處方來源、藥物組成、加減、功效、主治、制備方法、用法用量、用藥禁忌、臨床應用、藥理、各家論述等。并根據復方劑型、主治的病癥規范統一,存進SQL Server數據庫,作為實驗數據。數據庫詳細設計在此略過。3.2 模塊組成數據可視化與數據挖掘軟件的研究主要包括兩個功能模塊,中醫外用藥數據庫模塊以及數據可視化與數據挖掘模塊。其中,主要的數據可視化與數據挖掘模塊如圖1所示。3.2.1 數據預處理模塊 對需可視化和數據挖掘的源數據進行規范化處理,處理完成后存進數據庫。文本分詞系統根據《全國中草藥匯編》所建的詞表對特定的文獻資料進行分詞處理,本研究針對中藥外用藥領域的復方組成成分,使用逆向最長匹配算法,切分出復方的各個藥物組成,并進行統計處理,分詞結果可以作為可視化與數據挖掘的對象之一。 圖1 系統功能模塊圖3.2.2 數據可視化模塊 對數據對象進行二維或三維可視化顯示,數據對象來源不限,可以為既有數據,或新處理的分詞結果。根據適用對象的不同,可視化的方式也可繪出柱狀圖、餅狀圖、散點圖、火柴桿圖、面積圖、階梯圖等多種形式。3.2.3 數據挖掘模塊 系統采用基于共詞分析的聚類分析方法,對現有數據進行高頻字段統計,計算得出共詞矩陣,通過計算Ochiia系數,將共詞矩陣轉化為相似矩陣和相異矩陣,最后進行聚類分析,畫出聚類樹形圖。3.3 數據可視化與聚類分析示例3.3.1 二維柱狀圖 在程序中調用MATLAB繪制二維柱狀圖的代碼如下,生成的圖形如圖2所示。Set Mlab = CreateObject ("MATLAB.Applica- tion")Mlab.Execute (cmdMATLAB) 前面已經給字符串變量cmdMATLAB賦值,通過MATLAB執行命令創建數據矩陣或向量。Mlab.Execute ("bar(X),'stacked'") 通過函數bar()繪制二維柱狀圖。Mlab.Execute ("title('" & vXlabel & "柱狀圖', 'FontSize',15 )") 給圖形添加標題,設置字體字號。Mlab.Execute ("Ylabel('\it " & vYlabel &", FontSize',12 )")Mlab.Execute ("Xlabel('" & vXlabel & "序號 , 'FontSize',12 )") 給圖形縱坐標、橫坐標添加標簽,設置字體字號。Mlab.Execute ("set (gca, xtick, 1︰1︰" & vRcnt & ")") 給坐標軸添加向量刻度。 圖2 復方劑型統計二維柱狀圖從圖2可以直觀地看出,在整理出的346個外用復方中,采用散劑作為劑型的復方有128個,膏劑有113個,丸劑有52個,液劑有38個,餅劑有6個,片劑有2個,霜劑只有1個,其他不可直接判斷是何種劑型的復方有6個。3.3.2 三維火柴桿圖 與繪制柱狀圖類似,給變量cmdMATLAB賦值之后傳遞給MATLAB,創建數據矩陣或向量,即可通過命令Mlab.Execute ("stem3(X)")繪制三維火柴桿圖,如圖3所示。 圖3 復方劑型統計三維火柴桿圖如圖3所示,數據來源也是346個外用復方,然后根據劑型繪制出三維火柴桿圖。3.3.3 聚類分析 本研究中的數據挖掘是基于共詞研究的聚類分析。聚類分析法對于共詞關系網絡中的詞與詞之間的距離進行數學運算分析,將距離較近的主題詞聚集起來,形成一個個概念相對獨立的類團,使得類團內屬性相似性最大,類團間相似性最小[5]。本研究對于中藥復方中的藥材進行切分統計之后,再根據復方功效總結其對應的主治病癥,一起進行高頻關鍵詞統計,并計算得出共詞矩陣。再利用Ochiia系數計算出相似矩陣和相異矩陣,并作聚類分析,可以得知針對某些病癥的用藥規律。 圖4 中藥外用復方組成藥材主治聚類分析圖在高頻關鍵詞中按頻次從高到低的順序,排前30位的依次是冰片、白礬、乳香、雄黃、輕粉、瘡瘍、沒藥、麝香、黃柏、黃連、白芷、濕疹、當歸、甘草、石膏、朱砂、癰疽、青黛、大黃、龍骨、血竭、防風、五倍子、骨病關節病、硫黃、細辛、潰瘍、川芎、體癬、白及。在圖4中對應的編號從1依次到30。將這些關鍵詞進行聚類分析,結果如圖4所示。以圖舉例來說,編號15、17、20、30即表示石膏、癰疽、龍骨、白及,較早地聚為一類,很好地解釋了在治療癰疽時的用藥特點。4 小結本研究采用VB和MATLAB混合編程開發的數據可視化與數據挖掘軟件,提供友好的用戶交互界面,并以數據預處理、自動分詞切詞處理、共詞分析研究等完整的流程,進行外用復方藥材與病癥的聚類分析。應用此軟件的優勢在于,以前復雜煩瑣的依據文獻內容人工進行藥材摘錄、統計等工作,現在可以用程序自動完成,大大簡化了不必要的勞動,并且對數據進行分析挖掘,將結果以多種形式可視化地展現出來,為開發中醫藥和其他領域的應用程序積累了經驗,并為科研工作提供了有力的技術支持與新的方法。參考文獻[1]崔桂彬,王汝霖,李春梅,等.基于VB與MATLAB的圖像處理軟件設計[J].微計算機信息,2006,22(30):260-262.[2]譚炎,張凌燕.MATLAB與VB混合編程技術研究[J].微計算機信息,2006,22(15):247-249.[3]陳麗君,任文濤,趙萍.基于VB和MATLAB的苗田圖像實時處理軟件設計[J].農機化研究,2009,31(11):145-147.[4]盧振,曹屹,范永.基于VB與MATLAB混合編程數據庫圖形顯示方法[J].制導與引信,2009,30(3):36-40.[5]黃詠梅.讀者需求分析中的數據挖掘技術[J].大學圖書情報學刊,2006,24(4):48-50.(收稿日期:2013-10-24,編輯:魏民)endprint