嚴(yán)婷 文欣秀 趙嘉豪 王家輝 杜傲 白瑞杰
摘 要: 在大數(shù)據(jù)的時代背景下,考慮到與日俱增的數(shù)據(jù)分析需求以及傳統(tǒng)數(shù)據(jù)分析工具的高門檻性、操作復(fù)雜性等問題,基于Python和Django框架設(shè)計了一個具備數(shù)據(jù)分析、案例交流、算法學(xué)習(xí)等功能的可視化數(shù)據(jù)分析平臺,旨在幫助沒有算法基礎(chǔ)的普通用戶快速進行數(shù)據(jù)分析,并迅速獲取可視化的分析結(jié)果。該平臺還可以作為數(shù)據(jù)挖掘課程的輔助教學(xué)工具以及數(shù)據(jù)分析的科普平臺。
關(guān)鍵詞: Python; 數(shù)據(jù)分析; 教學(xué)輔助; 可視化
中圖分類號:G434 文獻標(biāo)志碼: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)絡(luò)等的興起和數(shù)據(jù)庫技術(shù)的成熟,社會中的各類數(shù)據(jù)正在以前所未有的速度增長。傳統(tǒng)的數(shù)據(jù)處理方式難以發(fā)掘出海量數(shù)據(jù)中所隱藏的規(guī)律,因此我們需要借助編程語言和數(shù)據(jù)分析軟件進行數(shù)據(jù)挖掘,采用算法建立恰當(dāng)?shù)哪P?,可視化地展示出?shù)據(jù)中隱含的規(guī)律,從而為人們的生產(chǎn)生活、經(jīng)濟發(fā)展等提供決策和建議[1-2]。
但是,在數(shù)據(jù)分析需求與日俱增的同時,普通用戶在進行數(shù)據(jù)分析和使用相關(guān)工具時也面臨著諸多問題,比如較高要求的門檻、相關(guān)的知識儲備、一定的學(xué)習(xí)成本以及必要的指導(dǎo)需求等。現(xiàn)有的專業(yè)數(shù)據(jù)分析軟件又或多或少地存在著一些問題,例如:MATLAB安裝文件就高達8G,運行環(huán)境要求高,不開源又使得費用非常昂貴;SPSS操作雖然方便,但是可擴展性非常弱,沒法對算法進行改進;SAS非常強大,然而不開源外加版權(quán)控制非常嚴(yán)格[3]。此外,數(shù)據(jù)挖掘與處理是一門涉及數(shù)學(xué)、統(tǒng)計學(xué)、計算機科學(xué)等的課程,若沒有經(jīng)過實踐操作與理論學(xué)習(xí)的結(jié)合,很難真正將其理解掌握并加以應(yīng)用。
基于以上問題,本文詳細描述了一個面向更廣大普通用戶的簡單易用的可視化數(shù)據(jù)分析系統(tǒng)的開發(fā)過程,旨在使不具有完備數(shù)據(jù)分析能力、算法基礎(chǔ)的用戶能夠快速上手進行數(shù)據(jù)分析。與此同時,系統(tǒng)也作為一個數(shù)據(jù)挖掘課程的輔助教學(xué)工具而投入實際教學(xué)之中,幫助學(xué)生清晰了解各類算法,融理論學(xué)習(xí)、動手操作、案例教學(xué)為一體,更好地學(xué)習(xí)數(shù)據(jù)挖掘及其應(yīng)用。
1 可視化數(shù)據(jù)分析平臺的設(shè)計
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)站上選擇相應(yīng)的算法,輸入想要分析的數(shù)據(jù)或上傳相關(guān)csv文件就能得到使用Echarts可視化的分析結(jié)果。
1.2 平臺結(jié)構(gòu)和功能
平臺主要包含三大功能模塊:一是在線數(shù)據(jù)分析;二是案例系統(tǒng);三是開源論壇。此外,為了便于用戶使用,平臺還提供了幫助中心。平臺功能框架圖如圖1所示。
1.2.1 在線數(shù)據(jù)分析
在線數(shù)據(jù)分析主要包括探索性數(shù)據(jù)分析、數(shù)據(jù)預(yù)處理及挖掘建模。
⑴ 探索性數(shù)據(jù)分析:用戶導(dǎo)入調(diào)查、觀測所得的雜亂無章的初步數(shù)據(jù),平臺在盡量少的先驗假定條件下進行處理,通過作圖、制表等形式和方程擬合、計算某些特征量等手段,探索數(shù)據(jù)的結(jié)構(gòu)和規(guī)律,如極差、均值、中位數(shù)、標(biāo)準(zhǔn)差、變異系數(shù)等。
⑵ 數(shù)據(jù)預(yù)處理:異常值檢測指用戶選擇要檢測異常值的文件,平臺通過做出對應(yīng)箱型圖來直觀反映原始數(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é)果圖與相應(yīng)的降維結(jié)果圖。
1.2.2 案例系統(tǒng)
案例系統(tǒng)提供一個用戶間進行案例分享與交流學(xué)習(xí)的平臺。我們根據(jù)系統(tǒng)在學(xué)生中的試用反饋,撰寫了一些和實際專業(yè)相結(jié)合的案例,例如: 在DNA分類中利用KNN算法;在楊氏模量實驗中利用線性回歸算法處理實驗數(shù)據(jù);在機械設(shè)計中利用拉格朗日插值快速檢索數(shù)據(jù)。這些案例可以幫助用戶更好地理解數(shù)據(jù)分析及其應(yīng)用,從而利用本系統(tǒng)解決學(xué)習(xí)生活中的問題。每個案例的展示界面都有詳細的問題背景描述以及相關(guān)數(shù)據(jù)。以DNA分類問題為例,其案例描述與數(shù)據(jù)分析結(jié)果如圖2所示。
用戶在學(xué)習(xí)相關(guān)案例之后,可以參照操作步驟動手實踐,加深對數(shù)據(jù)分析及其應(yīng)用的理解,并進一步挖掘自己的問題,同時可以撰寫自己的案例進行交流。
1.2.3 開源論壇
平臺提供所有算法的簡介以及開源代碼(如圖3所示),用戶可以在此進行算法的學(xué)習(xí)、交流,了解一些數(shù)據(jù)分析算法的具體實現(xiàn),并可以在此基礎(chǔ)上根據(jù)自己的需求進行二次開發(fā),有效提高了學(xué)生學(xué)習(xí)的積極性。
2 平臺特點與優(yōu)勢
傳統(tǒng)的數(shù)據(jù)挖掘課程教學(xué)模式存在許多問題:偏重理論,概念性很強,學(xué)生理解起來較為困難;不同層次的學(xué)生接受知識所需的時間不同,很難在課堂教學(xué)中做到全面展開;現(xiàn)有數(shù)據(jù)分析工具較為專業(yè),學(xué)習(xí)成本較高,不適合作為課程的常用實踐操作工具。而利用本系統(tǒng)可以很好地解決上述問題。
⑴ 實現(xiàn)理論與實踐的相結(jié)合。學(xué)生可以利用系統(tǒng)的數(shù)據(jù)分析模塊,在學(xué)習(xí)完理論知識后,根據(jù)個人興趣和需求選擇不同算法進行數(shù)據(jù)挖掘的實踐,操作簡單、易于上手,可視化的分析結(jié)果清晰直觀。每個學(xué)生掌握知識的程度不一致,學(xué)習(xí)該門課程的難易程度會不一致,可通過本系統(tǒng)讓學(xué)生進行個性化學(xué)習(xí),提高學(xué)生學(xué)習(xí)課程的積極性[5]。
⑵ 提供了與專業(yè)相關(guān)的應(yīng)用案例。系統(tǒng)提供了與學(xué)生實際專業(yè)相關(guān)的案例,學(xué)生可以在理論知識的學(xué)習(xí)基礎(chǔ)上,結(jié)合這些案例更好地理解數(shù)據(jù)挖掘的應(yīng)用。也可以撰寫上傳自己的案例并與其他用戶進行交流,在此過程中得到自我知識與能力的提升。
⑶ 提供了開源的算法代碼。系統(tǒng)提供了所有算法的開源代碼并附以注釋,學(xué)生能夠在理論學(xué)習(xí)之余,了解這些算法的具體實現(xiàn),以及親自運行這些代碼;也可以對原有算法進行改進以解決自己的問題,真正使學(xué)習(xí)從理論層面過渡到應(yīng)用層面,也可滿足不同層次學(xué)生的探索需求。
3 結(jié)束語
大數(shù)據(jù)時代仍在演進,數(shù)據(jù)分析的影響及重要性也在拓寬和加深。本文介紹了一個面向普通用戶的基于Python的簡單易操作的可視化數(shù)據(jù)分析平臺的開發(fā)過程,為數(shù)據(jù)分析軟件開發(fā)人員提供了案例,也為數(shù)據(jù)挖掘相關(guān)的教學(xué)工作提供了輔助教學(xué)的思路,以期更好地推廣數(shù)據(jù)分析。
下階段的項目目標(biāo)是:實現(xiàn)更多的數(shù)據(jù)算法,優(yōu)化現(xiàn)有的算法設(shè)計,例如提高可配置性等;加強其在日常教學(xué)方面的應(yīng)用;在系統(tǒng)上增設(shè)模塊,利用算法分析學(xué)生平時的作業(yè)情況、答題情況、考試成績等,幫助老師及學(xué)生自身更好地了解他們的學(xué)習(xí)情況。
參考文獻(References):
[1] 張引,陳敏,廖小飛.大數(shù)據(jù)應(yīng)用的現(xiàn)狀與展望[J].計算機研究
與發(fā)展,2013.50:216-233
[2] 張良均,王路,譚立云,蘇劍林.Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)[M].
機械工業(yè)出版社,2016.
[3] 吳升.大數(shù)據(jù)平臺中數(shù)據(jù)分析工具的設(shè)計與實現(xiàn)[D].東南大
學(xué)碩士論文,2015.
[4] Wesley J.Chun. Python核心編程(第二版)[M].人民郵電出版
社,2012.
[5] 唐曉鳳.數(shù)據(jù)挖掘課程教學(xué)改革探討[J].中外企業(yè)家,
2016.27:190