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