嚴婷 文欣秀 趙嘉豪 王家輝 杜傲 白瑞杰
摘 要: 在大數(shù)據(jù)的時代背景下,考慮到與日俱增的數(shù)據(jù)分析需求以及傳統(tǒng)數(shù)據(jù)分析工具的高門檻性、操作復雜性等問題,基于Python和Django框架設計了一個具備數(shù)據(jù)分析、案例交流、算法學習等功能的可視化數(shù)據(jù)分析平臺,旨在幫助沒有算法基礎的普通用戶快速進行數(shù)據(jù)分析,并迅速獲取可視化的分析結(jié)果。該平臺還可以作為數(shù)據(jù)挖掘課程的輔助教學工具以及數(shù)據(jù)分析的科普平臺。
關鍵詞: Python; 數(shù)據(jù)分析; 教學輔助; 可視化
中圖分類號:G434 文獻標志碼:A 文章編號:1006-8228(2017)12-54-03
Design and implementation of visualized data analysis platform based on Python
Yan Ting1, Wen Xinxiu1, Zhao Jiahao1, Wang Jiahui1, Du Ao2, Bai Ruijie3
(1. School of Information Science and Engineering, East China University of Science and Technology, Shanghai 200237, China; 2. School of Resource and Environmental Engineering, East China University of Science and Technology; 3. School of Mechanical and Power Engineering, East China University of Science and Technology)
Abstract: In the big data era, taking into account the increasing demand for data analysis and the high threshold of traditional data analysis tools, operational complexity and other issues, a visualized data analysis platform with functions of data analyzing, case exchanging and algorithm learning is designed based on Python and Django framework to help ordinary users without algorithm base to do data analysis quickly and obtain visualized analysis results quickly. And the platform can also be used as an auxiliary teaching tool for data mining courses and a popular science platform for data analysis.
Key words: Python; data analysis; teaching aids; visualization
0 引言
隨著云計算、物聯(lián)網(wǎng)、社交網(wǎng)絡等的興起和數(shù)據(jù)庫技術(shù)的成熟,社會中的各類數(shù)據(jù)正在以前所未有的速度增長。傳統(tǒng)的數(shù)據(jù)處理方式難以發(fā)掘出海量數(shù)據(jù)中所隱藏的規(guī)律,因此我們需要借助編程語言和數(shù)據(jù)分析軟件進行數(shù)據(jù)挖掘,采用算法建立恰當?shù)哪P停梢暬卣故境鰯?shù)據(jù)中隱含的規(guī)律,從而為人們的生產(chǎn)生活、經(jīng)濟發(fā)展等提供決策和建議[1-2]。
但是,在數(shù)據(jù)分析需求與日俱增的同時,普通用戶在進行數(shù)據(jù)分析和使用相關工具時也面臨著諸多問題,比如較高要求的門檻、相關的知識儲備、一定的學習成本以及必要的指導需求等。現(xiàn)有的專業(yè)數(shù)據(jù)分析軟件又或多或少地存在著一些問題,例如:MATLAB安裝文件就高達8G,運行環(huán)境要求高,不開源又使得費用非常昂貴;SPSS操作雖然方便,但是可擴展性非常弱,沒法對算法進行改進;SAS非常強大,然而不開源外加版權(quán)控制非常嚴格[3]。此外,數(shù)據(jù)挖掘與處理是一門涉及數(shù)學、統(tǒng)計學、計算機科學等的課程,若沒有經(jīng)過實踐操作與理論學習的結(jié)合,很難真正將其理解掌握并加以應用。
基于以上問題,本文詳細描述了一個面向更廣大普通用戶的簡單易用的可視化數(shù)據(jù)分析系統(tǒng)的開發(fā)過程,旨在使不具有完備數(shù)據(jù)分析能力、算法基礎的用戶能夠快速上手進行數(shù)據(jù)分析。與此同時,系統(tǒng)也作為一個數(shù)據(jù)挖掘課程的輔助教學工具而投入實際教學之中,幫助學生清晰了解各類算法,融理論學習、動手操作、案例教學為一體,更好地學習數(shù)據(jù)挖掘及其應用。
1 可視化數(shù)據(jù)分析平臺的設計
1.1 平臺核心技術(shù)
本平臺開發(fā)語言是Python,使用了Numpy,Matplotlib,Mysql-python等多個第三方模塊撰寫可配置的算法[4],并封裝成函數(shù)作為I/O接口用以進行數(shù)據(jù)分析。系統(tǒng)的網(wǎng)站搭建采用B/S(Browser/Server)平臺技術(shù),使用HTML、CSS、JS實現(xiàn)網(wǎng)頁展示,利用Django框架實現(xiàn)后臺處理。用戶可以在網(wǎng)站上選擇相應的算法,輸入想要分析的數(shù)據(jù)或上傳相關csv文件就能得到使用Echarts可視化的分析結(jié)果。
1.2 平臺結(jié)構(gòu)和功能
平臺主要包含三大功能模塊:一是在線數(shù)據(jù)分析;二是案例系統(tǒng);三是開源論壇。此外,為了便于用戶使用,平臺還提供了幫助中心。平臺功能框架圖如圖1所示。
1.2.1 在線數(shù)據(jù)分析
在線數(shù)據(jù)分析主要包括探索性數(shù)據(jù)分析、數(shù)據(jù)預處理及挖掘建模。
⑴ 探索性數(shù)據(jù)分析:用戶導入調(diào)查、觀測所得的雜亂無章的初步數(shù)據(jù),平臺在盡量少的先驗假定條件下進行處理,通過作圖、制表等形式和方程擬合、計算某些特征量等手段,探索數(shù)據(jù)的結(jié)構(gòu)和規(guī)律,如極差、均值、中位數(shù)、標準差、變異系數(shù)等。
⑵ 數(shù)據(jù)預處理:異常值檢測指用戶選擇要檢測異常值的文件,平臺通過做出對應箱型圖來直觀反映原始數(shù)據(jù)的分布情況,并體現(xiàn)出異常值。缺失值處理指平臺采用拉格朗日插值法對含有缺失值的文件進行處理,給出缺失值處的插值結(jié)果、原始數(shù)據(jù)與插值結(jié)果圖。
⑶ 挖掘建模:平臺采用了一系列算法(如:KNN、決策樹、K-means、 PCA、線性回歸等)對數(shù)據(jù)進行分析與處理,并進行可視化展示。比如:若用戶需要進行聚類分析,只需選擇待分析文件并在平臺上輸入想要將其聚為幾類,平臺即可利于K-means算法并結(jié)合文件中數(shù)據(jù)的維數(shù),自動選擇合適的圖表,給出分析結(jié)果圖以及必要的文字說明。若用戶需要對數(shù)據(jù)進行降維處理,用戶只需上傳文件并輸入原始數(shù)據(jù)維度和想要降至幾維,系統(tǒng)利用PCA算法對數(shù)據(jù)進行降維處理,保留原始數(shù)據(jù)中的主要成分,給出原始數(shù)據(jù)結(jié)果圖與相應的降維結(jié)果圖。
1.2.2 案例系統(tǒng)
案例系統(tǒng)提供一個用戶間進行案例分享與交流學習的平臺。我們根據(jù)系統(tǒng)在學生中的試用反饋,撰寫了一些和實際專業(yè)相結(jié)合的案例,例如: 在DNA分類中利用KNN算法;在楊氏模量實驗中利用線性回歸算法處理實驗數(shù)據(jù);在機械設計中利用拉格朗日插值快速檢索數(shù)據(jù)。這些案例可以幫助用戶更好地理解數(shù)據(jù)分析及其應用,從而利用本系統(tǒng)解決學習生活中的問題。每個案例的展示界面都有詳細的問題背景描述以及相關數(shù)據(jù)。以DNA分類問題為例,其案例描述與數(shù)據(jù)分析結(jié)果如圖2所示。
用戶在學習相關案例之后,可以參照操作步驟動手實踐,加深對數(shù)據(jù)分析及其應用的理解,并進一步挖掘自己的問題,同時可以撰寫自己的案例進行交流。
1.2.3 開源論壇
平臺提供所有算法的簡介以及開源代碼(如圖3所示),用戶可以在此進行算法的學習、交流,了解一些數(shù)據(jù)分析算法的具體實現(xiàn),并可以在此基礎上根據(jù)自己的需求進行二次開發(fā),有效提高了學生學習的積極性。
2 平臺特點與優(yōu)勢
傳統(tǒng)的數(shù)據(jù)挖掘課程教學模式存在許多問題:偏重理論,概念性很強,學生理解起來較為困難;不同層次的學生接受知識所需的時間不同,很難在課堂教學中做到全面展開;現(xiàn)有數(shù)據(jù)分析工具較為專業(yè),學習成本較高,不適合作為課程的常用實踐操作工具。而利用本系統(tǒng)可以很好地解決上述問題。
⑴ 實現(xiàn)理論與實踐的相結(jié)合。學生可以利用系統(tǒng)的數(shù)據(jù)分析模塊,在學習完理論知識后,根據(jù)個人興趣和需求選擇不同算法進行數(shù)據(jù)挖掘的實踐,操作簡單、易于上手,可視化的分析結(jié)果清晰直觀。每個學生掌握知識的程度不一致,學習該門課程的難易程度會不一致,可通過本系統(tǒng)讓學生進行個性化學習,提高學生學習課程的積極性[5]。
⑵ 提供了與專業(yè)相關的應用案例。系統(tǒng)提供了與學生實際專業(yè)相關的案例,學生可以在理論知識的學習基礎上,結(jié)合這些案例更好地理解數(shù)據(jù)挖掘的應用。也可以撰寫上傳自己的案例并與其他用戶進行交流,在此過程中得到自我知識與能力的提升。
⑶ 提供了開源的算法代碼。系統(tǒng)提供了所有算法的開源代碼并附以注釋,學生能夠在理論學習之余,了解這些算法的具體實現(xiàn),以及親自運行這些代碼;也可以對原有算法進行改進以解決自己的問題,真正使學習從理論層面過渡到應用層面,也可滿足不同層次學生的探索需求。
3 結(jié)束語
大數(shù)據(jù)時代仍在演進,數(shù)據(jù)分析的影響及重要性也在拓寬和加深。本文介紹了一個面向普通用戶的基于Python的簡單易操作的可視化數(shù)據(jù)分析平臺的開發(fā)過程,為數(shù)據(jù)分析軟件開發(fā)人員提供了案例,也為數(shù)據(jù)挖掘相關的教學工作提供了輔助教學的思路,以期更好地推廣數(shù)據(jù)分析。
下階段的項目目標是:實現(xiàn)更多的數(shù)據(jù)算法,優(yōu)化現(xiàn)有的算法設計,例如提高可配置性等;加強其在日常教學方面的應用;在系統(tǒng)上增設模塊,利用算法分析學生平時的作業(yè)情況、答題情況、考試成績等,幫助老師及學生自身更好地了解他們的學習情況。
參考文獻(References):
[1] 張引,陳敏,廖小飛.大數(shù)據(jù)應用的現(xiàn)狀與展望[J].計算機研究
與發(fā)展,2013.50:216-233
[2] 張良均,王路,譚立云,蘇劍林.Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)[M].
機械工業(yè)出版社,2016.
[3] 吳升.大數(shù)據(jù)平臺中數(shù)據(jù)分析工具的設計與實現(xiàn)[D].東南大
學碩士論文,2015.
[4] Wesley J.Chun. Python核心編程(第二版)[M].人民郵電出版
社,2012.
[5] 唐曉鳳.數(shù)據(jù)挖掘課程教學改革探討[J].中外企業(yè)家,
2016.27:190