卿 楓 韓 耀 唐明鳳 田 甜
(西華大學(xué) 電氣與電子信息學(xué)院,四川 成都 610039)
近年來(lái),隨著互聯(lián)網(wǎng)與通信技術(shù)的高速發(fā)展,學(xué)習(xí)資源的建設(shè)與共享呈現(xiàn)出新的發(fā)展趨勢(shì),各種網(wǎng)課、慕課、直播課等層出不窮,各種在線(xiàn)教育平臺(tái)和學(xué)習(xí) 應(yīng)用紛紛涌現(xiàn)。尤其是2020 年春季學(xué)期,受新冠疫情影響,在教育部“停課不停學(xué)”的要求下,網(wǎng)絡(luò)平臺(tái)成為“互聯(lián)網(wǎng)+教育”成果的重要展示陣地。因此,如何根據(jù)教育平臺(tái)的線(xiàn)上用戶(hù)信息和學(xué)習(xí)信息,通過(guò)數(shù)據(jù)分析為教育平臺(tái)和用戶(hù)提供精準(zhǔn)的課程推薦服務(wù)就成為線(xiàn)上教育的熱點(diǎn)問(wèn)題。本賽題提供了某教育平臺(tái)近兩年的運(yùn)營(yíng)數(shù)據(jù),希望參賽者根據(jù)這些數(shù)據(jù),為平臺(tái)制定綜合的線(xiàn)上課程推薦策略,以便更好地服務(wù)線(xiàn)上用戶(hù)。[1]
1.分析平臺(tái)用戶(hù)的活躍情況,計(jì)算用戶(hù)的流失率。
2.分析線(xiàn)上課程的受歡迎程度,構(gòu)建課程智能推薦模型,為教育平臺(tái)的線(xiàn)上 推薦服務(wù)提供策略。
任務(wù) 1.1 應(yīng)包含每個(gè)表中缺失值和重復(fù)值的記錄數(shù)以及有效數(shù)據(jù)的記錄數(shù)。
任務(wù) 1.2 應(yīng)包含 recently_logged 字段的“--”值的記錄數(shù)以及數(shù)據(jù)處 理的方法。
任務(wù) 2.1 應(yīng)包含各省份與各城市的熱力地圖以及主要省份和主要城市的數(shù)據(jù)表格,并進(jìn)行分析。
任務(wù) 2.2 應(yīng)包含工作日與非工作日各時(shí)段的柱狀圖,并進(jìn)行分析。
任務(wù) 2.3 應(yīng)包含對(duì)流失率的定義,并給出流失率的結(jié)果。
任務(wù) 2.4 應(yīng)根據(jù)計(jì)算結(jié)果給出合理的建議。
任務(wù) 3.1 應(yīng)包含最受歡迎的前 10 門(mén)課程的參與人數(shù)、受歡迎程度及柱狀圖。
任務(wù) 3.2 應(yīng)包含相應(yīng)推薦算法的描述,并給出總學(xué)習(xí)進(jìn)度最高的5 個(gè)用戶(hù)的課程推薦數(shù)據(jù)。
任務(wù) 3.3 應(yīng)包含數(shù)據(jù)分析的方法、算法描述以及主要結(jié)果。
數(shù)據(jù)時(shí)間:2020 年11 月14 日
數(shù)據(jù)處理是應(yīng)用數(shù)據(jù)分析前極其重要的一步,通常包括了對(duì)異常數(shù)據(jù)的處理、缺失值的處理和重復(fù)值的處理。只有處理了才能夠進(jìn)行模型的建立與訓(xùn)練,最終得到相關(guān)的結(jié)果。
2.2.1 異常數(shù)據(jù)處理
針對(duì)附件所給數(shù)據(jù)的study_information 文件,對(duì)其進(jìn)行處理。
2.2.2 缺失數(shù)據(jù)處理
針對(duì)附件所給數(shù)據(jù)的study_information 文件,首先讀取原始數(shù)據(jù)(如下圖1),然后再對(duì)其price 一欄的缺失值進(jìn)行處理,我們利用python 的pands 庫(kù)的數(shù)據(jù)處理功能先將缺失價(jià)格的課程統(tǒng)計(jì)出來(lái)course_id 中的課程51 與課程96的價(jià)格數(shù)據(jù)缺失,且課程51 缺失4011 個(gè),課程96 缺失227 個(gè)。針對(duì)study_information 文件總數(shù)據(jù)數(shù)來(lái)說(shuō),這缺失值的占比不足2%,由此我們將其價(jià)格統(tǒng)一補(bǔ)0 處理。
圖1
通過(guò)python 的布爾索引找出有缺失值的某列數(shù)據(jù),如下圖2:
圖2
由此可見(jiàn)price 列存在缺失值,由此利用fillina 將缺失值的課程進(jìn)行統(tǒng)計(jì)分析得到缺失值的課程id 為課程51 與課程96,在統(tǒng)計(jì)其缺失個(gè)數(shù)得到課程51 缺失4011 個(gè),課程96 缺失227 個(gè)。得到圖3:
圖3
再對(duì)缺失值進(jìn)行補(bǔ)0 操作得到如下圖數(shù)據(jù):
至此將study_information 文件中的所有缺失值處理完成。
針對(duì)附件給出的users 文件中的用戶(hù)id 欄存在缺失數(shù)據(jù)通過(guò)python 的pandas 庫(kù)將缺失用戶(hù)id 的那一欄數(shù)據(jù)全部提取出來(lái),提取圖4:
圖4
由于此數(shù)據(jù)量占總數(shù)據(jù)量的比例小因此采取了剔除處理,將以上的67 個(gè)缺失用戶(hù)id 全部移除。得到新的數(shù)據(jù)如圖5:
圖5
由此文件users 文件中的缺失用戶(hù)id 全部解決。
通過(guò)已經(jīng)進(jìn)行了缺失值和重復(fù)值處理的文件users,再將login 文件中的最近登陸時(shí)間的那一列數(shù)據(jù)進(jìn)行時(shí)間戳類(lèi)型轉(zhuǎn)化,找到最近的時(shí)間,再通過(guò)用戶(hù)id 匹配users 文件中的相同的用戶(hù)id 上將最近登陸的時(shí)間補(bǔ)為login 文件找到的最近的時(shí)間。但是經(jīng)過(guò)此種方式進(jìn)行匹配后依然未完全補(bǔ)全。由此確定某些用戶(hù)再注冊(cè)后并沒(méi)有使用,故將其最近的登陸時(shí)間修改為注冊(cè)的時(shí)間。最后補(bǔ)全數(shù)據(jù)如圖6 所示:
圖6
2.2.3 重復(fù)數(shù)據(jù)處理
通過(guò)對(duì)已經(jīng)進(jìn)行過(guò)數(shù)據(jù)缺失處理的users 文件進(jìn)行數(shù)據(jù)分析,發(fā)現(xiàn)文件users 的某些行存在重復(fù)的數(shù)據(jù)如圖7 所示:
圖7
在經(jīng)過(guò)python 的將user 的重復(fù)值刪除保留其中的一行有用的數(shù)據(jù),處理后如圖8 所示:
圖8
由此解決了文件user 中的數(shù)據(jù)重復(fù)的問(wèn)題。
數(shù)據(jù)可視化主要旨在借助于圖形化手段,清晰有效地傳達(dá)與溝通信息。但是,這并不就意味著數(shù)據(jù)可視化就一定因?yàn)橐獙?shí)現(xiàn)其功能用途而令人感到枯燥乏味,或者是為了看上去絢麗多彩而顯得極端復(fù)雜。[2]為了有效地傳達(dá)思想概念,美學(xué)形式與功能需要齊頭并進(jìn),通過(guò)直觀(guān)地傳達(dá)關(guān)鍵的方面與特征,從而實(shí)現(xiàn)對(duì)于相當(dāng)稀疏而又復(fù)雜的數(shù)據(jù)集的深入洞察。然而,設(shè)計(jì)人員往往并不能很好地把握設(shè)計(jì)與功能之間的平衡,從而創(chuàng)造出華而不實(shí)的數(shù)據(jù)可視化形式,無(wú)法達(dá)到其主要目的,也就是傳達(dá)與溝通信息。[3]
圖9
圖10
3.2.1 熱力地圖
統(tǒng)計(jì)login 文件中不同的登陸地點(diǎn)的登陸次數(shù)然后通過(guò)python 的pyecharts 庫(kù)進(jìn)行熱力地圖的繪制。通過(guò)對(duì)數(shù)據(jù)的分析及處理,得到不同登陸地點(diǎn)的登陸次數(shù)。
3.2.2 登陸次數(shù)柱狀圖
通過(guò)對(duì)users 文件中的最近訪(fǎng)問(wèn)時(shí)間那一列數(shù)據(jù)進(jìn)行時(shí)間戳轉(zhuǎn)化然后通過(guò)匹配星期的方式將每個(gè)時(shí)間進(jìn)行分類(lèi),將為工作日的數(shù)據(jù)標(biāo)記為0,非工作日的標(biāo)記為1。然后再將統(tǒng)計(jì)的數(shù)據(jù)進(jìn)行分類(lèi)處理,在劃分時(shí)間段統(tǒng)計(jì)登陸次數(shù),最后利用python 的matplotlib 庫(kù)繪制成柱狀圖。
3.2.3 流失率分析
先統(tǒng)計(jì)users 文件中的最近登陸時(shí)間與2020 年6 月18日的時(shí)間差,當(dāng)時(shí)間差大90 天的時(shí)間時(shí)將此項(xiàng)標(biāo)記為1,將時(shí)間差小于等于90 天的標(biāo)記為0,最后將標(biāo)記欄求和就得到流失的人數(shù)為22474,在于總?cè)藬?shù)相比得到最后的流失率為51.18%。
3.3.1 受歡迎程度分析
根據(jù)用戶(hù)參與學(xué)習(xí)的記錄,統(tǒng)計(jì)每門(mén)課程的參與人數(shù),計(jì)算每門(mén)課 程的受歡迎程度,列出最受歡迎的前 10 門(mén)課程,并繪制相應(yīng)的柱狀圖。通過(guò)數(shù)據(jù)處理過(guò)后的study_information 文件用python 提取出每一個(gè)課程的選人數(shù)量然后在對(duì)他的選課人數(shù)進(jìn)行排序。
3.3.2 相似度分析
根據(jù)用戶(hù)選擇課程情況,構(gòu)建用戶(hù)和課程的關(guān)系表(二元矩陣),使用基于物品的協(xié)同過(guò)濾算法計(jì)算課程之間的相似度。[4]通過(guò)數(shù)據(jù)預(yù)處理study_information 的文件,利用python 的pandas 庫(kù)得到:得到協(xié)同過(guò)濾后的數(shù)據(jù)如圖9所示:
通過(guò)數(shù)據(jù)分析得到的活躍程度的柱狀圖,然后柱狀圖表明非工作日時(shí)早上8:00 點(diǎn)到晚上20:00 的活躍度最高,由此可以建議在工作日時(shí)將課程開(kāi)放時(shí)間調(diào)整在早上8:00到晚上20:00。然而非工作日活躍度有延長(zhǎng)的趨勢(shì),所以在非工作日時(shí)把課程開(kāi)放時(shí)間可以適當(dāng)延長(zhǎng)。
通過(guò)對(duì)課程之間的相似度分析與付費(fèi)和免費(fèi)課程統(tǒng)計(jì)得到圖10、圖11:
圖11
由此得到付費(fèi)課程的學(xué)習(xí)人數(shù)較多,而免費(fèi)課程的學(xué)習(xí)人數(shù)較少。由此,為促進(jìn)學(xué)習(xí)可以適當(dāng)將一部分課程進(jìn)行收費(fèi),同時(shí)來(lái)提高課程的學(xué)習(xí)率。
通過(guò)對(duì)附件所給的數(shù)據(jù)進(jìn)行預(yù)處理,對(duì)缺失數(shù)據(jù)和重復(fù)數(shù)據(jù)的處理,再到對(duì)問(wèn)題的分析以及對(duì)各個(gè)任務(wù)的處理,其中運(yùn)用了python 的pandas 庫(kù)、datetime 庫(kù)、matplotlib 庫(kù)、numpy 庫(kù)、pyecharts 庫(kù),最后得到的線(xiàn)上課程的綜合策略與管理決策建議。