1 可视化数据分析平台的设计

本平台开发语言是Python,使用了Numpy,Matplotlib,Mysql-python等多个第三方模块撰写可配置的算法[4],并封装成函数作为I/O接口用以进行数据分析。系统的网站搭建采用B/S(Browser/Server)平台技术,使用HTML、CSS、JS实现网页展示,利用Django框架实现后台处理。用户可以在网站上选择相应的算法,输入想要分析的数据或上传相关csv文件就能得到使用Echarts可视化的分析结果。

平台主要包含三大功能模块:一是在线数据分析;二是案例系统;三是开源论坛。此外,为了便于用户使用,平台还提供了帮助中心。平台功能框架图如图1所示。

1.2.1 在线数据分析

在线数据分析主要包括探索性数据分析、数据预处理及挖掘建模。⑴ 探索性数据分析:用户导入调查、观测所得的杂乱无章的初步数据,平台在尽量少的先验假定条件下进行处理,通过作图、制表等形式和方程拟合、计算某些特征量等手段,探索数据的结构和规律,如极差、均值、中位数、标准差、变异系数等。

⑵ 数据预处理:异常值检测指用户选择要检测异常值的文件,平台通过做出对应箱型图来直观反映原始数据的分布情况,并体现出异常值。缺失值处理指平台采用拉格朗日插值法对含有缺失值的文件进行处理,给出缺失值处的插值结果、原始数据与插值结果图。

⑶ 挖掘建模:平台采用了一系列算法(如:KNN、决策树、K-means、 PCA、线性回归等)对数据进行分析与处理,并进行可视化展示。比如:若用户需要进行聚类分析,只需选择待分析文件并在平台上输入想要将其聚为几类,平台即可利于K-means算法并结合文件中数据的维数,自动选择合适的图表,给出分析结果图以及必要的文字说明。若用户需要对数据进行降维处理,用户只需上传文件并输入原始数据维度和想要降至几维,系统利用PCA算法对数据进行降维处理,保留原始数据中的主要成分,给出原始数据结果图与相应的降维结果图。

案例系统提供一个用户间进行案例分享与交流学习的平台。我们根据系统在学生中的试用反馈,撰写了一些和实际专业相结合的案例,例如: 在DNA分类中利用KNN算法;在杨氏模量实验中利用线性回归算法处理实验数据;在机械设计中利用拉格朗日插值快速检索数据。这些案例可以帮助用户更好地理解数据分析及其应用,从而利用本系统解决学习生活中的问题。每个案例的展示界面都有详细的问题背景描述以及相关数据。以DNA分类问题为例,其案例描述与数据分析结果如图2所示。

用户在学习相关案例之后,可以参照操作步骤动手实践,加深对数据分析及其应用的理解,并进一步挖掘自己的问题,同时可以撰写自己的案例进行交流。

平台提供所有算法的简介以及开源代码(如图3所示),用户可以在此进行算法的学习、交流,了解一些数据分析算法的具体实现,并可以在此基础上根据自己的需求进行二次开发,有效提高了学生学习的积极性。

传统的数据挖掘课程教学模式存在许多问题:偏重理论,概念性很强,学生理解起来较为困难;不同层次的学生接受知识所需的时间不同,很难在课堂教学中做到全面展开;现有数据分析工具较为专业,学习成本较高,不适合作为课程的常用实践操作工具。而利用本系统可以很好地解决上述问题。

⑴ 实现理论与实践的相结合。学生可以利用系统的数据分析模块,在学习完理论知识后,根据个人兴趣和需求选择不同算法进行数据挖掘的实践,操作简单、易于上手,可视化的分析结果清晰直观。每个学生掌握知识的程度不一致,学习该门课程的难易程度会不一致,可通过本系统让学生进行个性化学习,提高学生学习课程的积极性[5]。

⑵ 提供了与专业相关的应用案例。系统提供了与学生实际专业相关的案例,学生可以在理论知识的学习基础上,结合这些案例更好地理解数据挖掘的应用。也可以撰写上传自己的案例并与其他用户进行交流,在此过程中得到自我知识与能力的提升。

⑶ 提供了开源的算法代码。系统提供了所有算法的开源代码并附以注释,学生能够在理论学习之余,了解这些算法的具体实现,以及亲自运行这些代码;也可以對原有算法进行改进以解决自己的问题,真正使学习从理论层面过渡到应用层面,也可满足不同层次学生的探索需求。