宋永生 吳新華
摘 要: Moodle作為一種開源學(xué)習(xí)平臺(tái),在高職院校中得到了廣泛的運(yùn)用。Moodle在使用過程中,積累了大量的數(shù)據(jù)。利用Python語言設(shè)計(jì)程序,對(duì)學(xué)習(xí)平臺(tái)積累的日志數(shù)據(jù)進(jìn)行分析,揭示出Moodle學(xué)習(xí)平臺(tái)在線學(xué)習(xí)人數(shù)隨日期和時(shí)間的變化規(guī)律,為學(xué)習(xí)平臺(tái)的計(jì)算資源分配及教師在線輔導(dǎo)的時(shí)間選擇提供決策依據(jù)。
關(guān)鍵詞: Python; Moodle; 學(xué)習(xí)平臺(tái); 日志
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2018)10-19-03
Abstract: As an open source learning platform, Moodle has been widely used in higher vocational colleges. Moodle has accumulated a lot of data in the process of using. Design a program by using Python language to analyze the log data accumulated on the learning platform, reveal the law that the number of online learner on Moodle learning platform changes with the date and time, and provide a decision basis for the allocation of computing resources of the learning platform and time selection of teachers' online tutoring.
Key words: Python; Moodle; learning platform; log
0 引言
Moodle是一種開源在線學(xué)習(xí)平臺(tái),它基于開源腳本語言PHP開發(fā),數(shù)據(jù)庫采用開源關(guān)系型數(shù)據(jù)庫MySQL,支持SCORM和AICC標(biāo)準(zhǔn)課件,可以創(chuàng)建互操作、易訪問和可復(fù)用的基于Web的學(xué)習(xí)內(nèi)容。Moodle把整個(gè)學(xué)習(xí)過程抽象為活動(dòng)和資源,主要有課程管理、作業(yè)、聊天、投票、論壇、測(cè)驗(yàn)、問卷調(diào)查、互動(dòng)評(píng)價(jià)及資源等模塊[1]。Moodle學(xué)習(xí)平臺(tái)界面簡潔明了,但功能非常強(qiáng)大,Moodle的在線教學(xué)模塊采用可自由組合的動(dòng)態(tài)模塊化設(shè)計(jì),教師構(gòu)建在線教學(xué)課程像搭積木一樣簡單有趣。伴隨著Moodle的飛速發(fā)展,近年來國內(nèi)很多高職院校先后上線了Moodle在線學(xué)習(xí)平臺(tái)。Moodle網(wǎng)絡(luò)學(xué)習(xí)平臺(tái)在使用過程中,積累了大量的學(xué)習(xí)資源數(shù)據(jù)和學(xué)習(xí)行為數(shù)據(jù),而這些數(shù)據(jù)并沒有在在線學(xué)習(xí)實(shí)踐中真正發(fā)揮應(yīng)有的作用。
Python是Guido van Rossum在1989年圣誕節(jié)期間開發(fā)的一種面向?qū)ο蟮慕忉屝透呒?jí)程序設(shè)計(jì)語言。Python程序具有簡潔性、易讀性、可擴(kuò)展性及跨平臺(tái)運(yùn)行。Python作為一種膠水語言,方便擴(kuò)展,提供了豐富的API和工具,可以使用C、C++或Java來編寫擴(kuò)充模塊。Python最大的優(yōu)勢(shì)是有豐富的庫,數(shù)據(jù)分析是Python的殺手锏,利用Python做科學(xué)計(jì)算的科研人員日益增多。因?yàn)镻ython是一種解釋型語言,所以運(yùn)行速度相對(duì)較慢,而且代碼不能加密,但利用Python語言編程的開發(fā)速度較快。
隨著物聯(lián)網(wǎng)、云計(jì)算等信息技術(shù)的飛速發(fā)展,各種應(yīng)用系統(tǒng)近年來積累了大量的數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行分析的需求也與日俱增,然而普通用戶在進(jìn)行數(shù)據(jù)分析和使用相關(guān)工具時(shí)也面臨著諸多問題[2]。目前主流的數(shù)據(jù)分析軟件有Matlab、SPSS和SAS,然而這些軟件費(fèi)用高昂,安裝包較大,安裝過程復(fù)雜,所以很多研究人員紛紛將目光轉(zhuǎn)向程序設(shè)計(jì)。目前數(shù)據(jù)分析的程序設(shè)計(jì)語言主要包括R和Python。數(shù)據(jù)集大了以后,R語言的處理速度下降明顯,而且R語言的受眾較窄,一般只有金融方面的人士在使用。近年來,隨著Python語言在人工智能領(lǐng)域的大放異彩,Python走進(jìn)了中小學(xué)課堂,且被列為全國計(jì)算機(jī)等級(jí)考試的程序語言,越來越多的人開始學(xué)習(xí)和使用Python語言。Python已經(jīng)成為最受歡迎的程序設(shè)計(jì)語言之一[3]。
本文提出利用Python語言進(jìn)行程序設(shè)計(jì),對(duì)開源學(xué)習(xí)平臺(tái)Moodle積累下來的日志數(shù)據(jù)進(jìn)行分析,嘗試發(fā)現(xiàn)一些對(duì)Moodle學(xué)習(xí)平臺(tái)有用的信息。
1 數(shù)據(jù)處理流程
本文采用Python語言編寫程序,對(duì)Moodle學(xué)習(xí)平臺(tái)積累下來的日志數(shù)據(jù)進(jìn)行分析,數(shù)據(jù)分析處理的流程如圖1所示。
2 相關(guān)技術(shù)
2.1 數(shù)據(jù)預(yù)處理
收集到的原始數(shù)據(jù)可能來自不同的數(shù)據(jù)源,不同的格式,而且數(shù)據(jù)中也可能有缺失、重復(fù)、不一致甚至錯(cuò)誤的數(shù)據(jù),這使得數(shù)據(jù)分析的結(jié)果可能出現(xiàn)偏差,甚至錯(cuò)誤,所以在數(shù)據(jù)分析之前的數(shù)據(jù)預(yù)處理非常重要。數(shù)據(jù)預(yù)處理分為數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)規(guī)約及數(shù)據(jù)變換四個(gè)步驟。數(shù)據(jù)清洗主要包括填充缺失值、光滑噪聲、識(shí)別離群點(diǎn)等;數(shù)據(jù)集成主要指集成多種數(shù)據(jù)源;數(shù)據(jù)規(guī)約主要指數(shù)據(jù)的簡化表示;數(shù)據(jù)變換主要指數(shù)據(jù)規(guī)范化、離散化及概念分層等。
本文的數(shù)據(jù)來自Moodle學(xué)習(xí)平臺(tái),可以編寫程序連接學(xué)習(xí)平臺(tái)的MySQL數(shù)據(jù)庫讀日志數(shù)據(jù),也可以通過日志頁面直接導(dǎo)出Execl或CSV格式日志數(shù)據(jù)。本文在導(dǎo)出Execl格式的日志數(shù)據(jù)后,編寫Python程序,利用openpyxl庫,讀取日志數(shù)據(jù),轉(zhuǎn)換日期時(shí)間列的格式,生成新的日期列和時(shí)間列,將處理結(jié)果保存為新的Execl文件,部分日志數(shù)據(jù)如圖2所示,其中加粗的為新增列。由于本文的數(shù)據(jù)源單一,不存在數(shù)據(jù)缺失等問題,所以數(shù)據(jù)預(yù)處理相對(duì)簡單。
2.2 利用Pandas進(jìn)行數(shù)據(jù)分析
數(shù)據(jù)分析是指利用統(tǒng)計(jì)等方法對(duì)收集到的數(shù)據(jù)進(jìn)行分析,提取有用信息并形成知識(shí)的過程。數(shù)據(jù)挖掘是從海量數(shù)據(jù)中抽取前所未知的,可理解的,可操作信息的過程,數(shù)據(jù)挖掘是數(shù)據(jù)分析的高級(jí)階段。Pandas是一個(gè)專門用于數(shù)據(jù)分析的開源Python庫[4],它以Python的科學(xué)計(jì)算基礎(chǔ)庫NumPy為基礎(chǔ),使得Pandas具有較好的兼容性,還可以借力NumPy庫在計(jì)算方面的高性能優(yōu)勢(shì)。Pandas最初由AQR Capital Management于2008年4月開發(fā),并于2009年底開源。Pandas提供了多種高級(jí)的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)處理的方法,其中最主要的是Series和DataFrame數(shù)據(jù)結(jié)構(gòu)。Series用來表示一維數(shù)據(jù)結(jié)構(gòu),與數(shù)組類似,但功能更強(qiáng)大,每一個(gè)元素都有一個(gè)標(biāo)簽,可以理解為一組帶索引的數(shù)組。DataFrame用來表示二維的表結(jié)構(gòu),它是由按一定順序排列的多列數(shù)據(jù)組成,各列的數(shù)據(jù)類型可以不同。
本文利用Python編寫程序,讀取數(shù)據(jù)預(yù)處理得到的Execl文件,首先把用戶全名及日期列讀取到Pandas DataFrame中,刪除重復(fù)行,然后按日期進(jìn)行分組,統(tǒng)計(jì)每組總?cè)藬?shù),得到在線人數(shù)隨日期變化的統(tǒng)計(jì)數(shù)據(jù);再把用戶全名、時(shí)間列讀取到Pandas DataFrame中,刪除重復(fù)的行,按時(shí)間進(jìn)行分組,統(tǒng)計(jì)每組總?cè)藬?shù),得到在線人數(shù)隨時(shí)間變化的統(tǒng)計(jì)數(shù)據(jù)。
2.3 利用Matplotlib進(jìn)行數(shù)據(jù)可視化
數(shù)據(jù)可視化是指將數(shù)據(jù)分析的結(jié)果,通過圖形等方式直觀展示出來,便于解釋和評(píng)估,從而形成知識(shí)。一張圖勝過千言萬語,當(dāng)數(shù)據(jù)以直觀的圖形方式展示在數(shù)據(jù)分析者面前時(shí),分析者往往能夠一眼洞悉數(shù)據(jù)背后隱藏的信息并轉(zhuǎn)化知識(shí)以及智慧[5]。Python中常用的數(shù)據(jù)可視化庫主要有Matplotlib、Bokeh、Pygal、Plot.ly、Seaborn及ggplot。
Matplotlib是一個(gè)基于NumPy的2D繪圖庫,它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。Seaborn及ggplot庫是以Matplotlib庫為基礎(chǔ)進(jìn)行構(gòu)建的。Matplotlib用于數(shù)據(jù)的可視化,可以將數(shù)據(jù)分析結(jié)果直觀展示,便于數(shù)據(jù)分析結(jié)果的解釋和評(píng)估。利用Matplotlib庫,通過編程可以方便繪制直方圖、折線圖、餅圖、散點(diǎn)圖及雷達(dá)圖等。本文在對(duì)學(xué)習(xí)平臺(tái)的日志數(shù)據(jù)分析結(jié)果進(jìn)行可視化時(shí),通過調(diào)用Matplotlib繪圖庫,先以日期為橫軸,以對(duì)應(yīng)的在線人數(shù)為縱軸,繪制折線圖,展示出學(xué)習(xí)平臺(tái)在線人數(shù)隨日期的變化規(guī)律;再以時(shí)間為橫軸,以對(duì)應(yīng)的在線人數(shù)為縱軸,繪制折線圖,直觀地展示出學(xué)習(xí)平臺(tái)在線人數(shù)隨時(shí)間的變化規(guī)律。
3 數(shù)據(jù)分析實(shí)現(xiàn)
本文選擇江蘇工程職業(yè)技術(shù)學(xué)院商學(xué)院的2016級(jí)電子商務(wù)獨(dú)立本科班所使用的Moodle學(xué)習(xí)平臺(tái)的網(wǎng)絡(luò)課程《網(wǎng)絡(luò)安全》的日志數(shù)據(jù)進(jìn)行分析,共14人(含在外實(shí)習(xí)學(xué)生)參加該課程網(wǎng)絡(luò)學(xué)習(xí)。在Moodle學(xué)習(xí)平臺(tái)的日志信息頁面,選擇要分析的日志并導(dǎo)出為Execl格式,然后通過Python編寫程序讀取日志數(shù)據(jù),對(duì)日志數(shù)據(jù)進(jìn)行預(yù)處理,轉(zhuǎn)換日期時(shí)間格式,生成新的日期列和時(shí)間列,將預(yù)處理后的日志數(shù)據(jù)保存。讀取用戶全名及日期列,刪除重復(fù)行,先按日期進(jìn)行分組統(tǒng)計(jì)在線人數(shù)并利用Matplotlib繪制折線圖,橫軸為日期,縱軸為在線學(xué)習(xí)人數(shù),程序運(yùn)行結(jié)果如圖3所示。
類似的,按時(shí)間進(jìn)行分組統(tǒng)計(jì)在線人數(shù)并利用Matplotlib繪制折線圖,橫軸為時(shí)間,縱軸為在線學(xué)習(xí)人數(shù),程序運(yùn)行結(jié)果如圖4所示。
由圖3可以看出,在線學(xué)習(xí)的人數(shù)有一定的周期性規(guī)律,這點(diǎn)與該課程在每周二開課,課上學(xué)生利用學(xué)習(xí)平臺(tái)進(jìn)行學(xué)習(xí)或測(cè)驗(yàn)相吻合,上課日期的在線人數(shù)最多。由圖4可以看出,晚上在線學(xué)習(xí)的人數(shù)較多,這與課程開設(shè)在晚間是一致的,此外中午放學(xué)后、下午放學(xué)后及晚上放學(xué)后,在線人數(shù)也會(huì)出現(xiàn)小高峰,這說明學(xué)生課余時(shí)間會(huì)登錄學(xué)習(xí)平臺(tái)進(jìn)行學(xué)習(xí)及做作業(yè)。除了課堂時(shí)間,教師可以選擇在這三時(shí)段進(jìn)行在線輔導(dǎo)。平臺(tái)管理者應(yīng)該為學(xué)習(xí)平臺(tái)的服務(wù)器在該時(shí)段分配更多的計(jì)算資源,以保證學(xué)習(xí)平臺(tái)順暢穩(wěn)定運(yùn)行。
4 結(jié)束語
本文利用Python語言編寫程序,分析開源學(xué)習(xí)平臺(tái)Moodle產(chǎn)生的日志數(shù)據(jù),從而揭示一些關(guān)于Moodle平臺(tái)上學(xué)習(xí)者學(xué)習(xí)的規(guī)律。該研究有助于教師選擇在線人數(shù)較多的時(shí)段進(jìn)行在線輔導(dǎo)及答疑,從而提高學(xué)生的在線學(xué)習(xí)效率,平臺(tái)管理者在此時(shí)段應(yīng)為學(xué)習(xí)平臺(tái)的服務(wù)器分配更多的計(jì)算資源。將來可以利用機(jī)器學(xué)習(xí)的方法對(duì) Moodle學(xué)習(xí)平臺(tái)積累的數(shù)據(jù)進(jìn)行分析,幫助教師發(fā)現(xiàn)學(xué)生學(xué)習(xí)的更多規(guī)律、分析學(xué)習(xí)特征及習(xí)慣等,針對(duì)性的改進(jìn)學(xué)習(xí)平臺(tái)及學(xué)習(xí)資源,優(yōu)化教學(xué)過程,為學(xué)生提供個(gè)性化的學(xué)習(xí)服務(wù),提升教學(xué)效果。
參考文獻(xiàn)(References):
[1] 宋永生.基于云計(jì)算的在線學(xué)習(xí)平臺(tái)研究[J].價(jià)值工程,2017.36:172-174
[2] 嚴(yán)婷,文欣秀,趙嘉豪等.基于Python的可視化數(shù)據(jù)分析平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2017.12:54-56
[3] 聶晶.Python在大數(shù)據(jù)挖掘和分析中的應(yīng)用優(yōu)勢(shì) [J].廣西民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2018.24(1):76-79
[4] (意)Fabio Nelli著,杜春曉譯.Python數(shù)據(jù)分析實(shí)戰(zhàn)[M].人民郵電出版社,2016.
[5] 任磊,杜一,馬帥等.大數(shù)據(jù)可視分析綜述[J].軟件學(xué)報(bào),2014.25(9):1909-1936