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