基于VB与MATLAB混合编程的数据可视化与数据挖掘软件的研究

时间:2022-05-20 02:49:14

基于VB与MATLAB混合编程的数据可视化与数据挖掘软件的研究

摘要:基于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:*通讯作者:李文林,研究馆员,研究方向:中医药数据分析与挖掘。E-mail: 机交换界面的功能相对较弱,而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.Text

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’, 11" & 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,编辑:魏民)

上一篇:“情、趣、动” 下一篇:我国8种中医药类中文核心期刊引文的文献计量学...