鄭海鵬
(淮南聯(lián)合大學(xué) 信息工程學(xué)院,安徽 淮南 232001)
高校一卡通系統(tǒng)中存儲(chǔ)了海量的學(xué)生行為數(shù)據(jù),這些數(shù)據(jù)整體上是雜亂無(wú)章的,無(wú)法真實(shí)有效地映射學(xué)生的實(shí)際行為特征。如能充分發(fā)掘這些數(shù)據(jù)背后的真正價(jià)值和意義,將會(huì)給高校的學(xué)生管理工作提供巨大的幫助。
目前,已有許多高校科研團(tuán)隊(duì)對(duì)高校一卡通數(shù)據(jù)展開了相關(guān)研究工作。張四海等[1]對(duì)南開大學(xué)師生食堂的消費(fèi)數(shù)據(jù)進(jìn)行了深入分析,給出了師生的就餐規(guī)律曲線,用于優(yōu)化食堂的膳食資源配置。邢窈窈等[2]對(duì)學(xué)生校園卡刷卡行為進(jìn)行分析,利用逐步回歸法得出學(xué)生成績(jī)排名的回歸模型,提出提高學(xué)生成績(jī)的實(shí)際舉措;王祎珺等[3]對(duì)校園一卡通的圖書館學(xué)生學(xué)習(xí)行為進(jìn)行詳細(xì)分析,有效地獲取了學(xué)生的學(xué)習(xí)行為現(xiàn)狀。本文使用SPSS軟件中的K-Means算法對(duì)學(xué)生用餐數(shù)據(jù)進(jìn)行聚類,對(duì)聚類后的不同群體做其他行為分析。
淮南聯(lián)合大學(xué)一卡通系統(tǒng)于2009年正式開通。在圖書館、學(xué)校食堂、超市、洗浴中心、校園門禁等場(chǎng)所中均已投放使用,系統(tǒng)集成度高,完美地融合了信息通信技術(shù)[4],實(shí)現(xiàn)了身份認(rèn)證、數(shù)據(jù)共享、金融消費(fèi)等多種功能[5]。給全校學(xué)生每天的生活提供了極為便捷的服務(wù),加速了數(shù)字化、信息化管理的進(jìn)程,切實(shí)提高了學(xué)校的科學(xué)管理水平,一卡通系統(tǒng)已成為學(xué)校不可或缺的核心業(yè)務(wù)系統(tǒng)[6]。
高校一卡通數(shù)據(jù)涵蓋了學(xué)生在校內(nèi)食堂、超市、洗浴消費(fèi)場(chǎng)所及圖書館讀書、借閱等相關(guān)記錄,為便于對(duì)學(xué)生用餐行為數(shù)據(jù)進(jìn)行聚類分析,需要對(duì)采集到的原始數(shù)據(jù)進(jìn)行預(yù)處理,去除冗余及屬性值無(wú)效或缺失的相關(guān)記錄。
本文原始數(shù)據(jù)由淮南聯(lián)合大學(xué)一卡通系統(tǒng)管理中心提供,所采集數(shù)據(jù)的真實(shí)及可靠性均能得到有效保證。(注:有極少量的學(xué)生學(xué)習(xí)成績(jī)相關(guān)數(shù)據(jù)來(lái)自于學(xué)校的學(xué)工系統(tǒng))將采集到的一卡通數(shù)據(jù)文件ecexpressquery.DMP導(dǎo)入到Oracle數(shù)據(jù)庫(kù)中,具體操作如下:
(1)使用cmd命令打開命令提示符,輸入sqlplus system/1211@orcl as sysdba;
命令,以管理員身份登錄oracle數(shù)據(jù)庫(kù)。
(2)創(chuàng)建表空間并指定其存儲(chǔ)容量
創(chuàng)建一個(gè)表空間用于存放將要導(dǎo)入的ecexpressquery.DMP文件,輸入命令:
create tablespace ecexpress datafile 'C:app Administratororadataorclecexpress.dbf' size 2048M;
(3)創(chuàng)建用戶并指定默認(rèn)表空間
創(chuàng)建一個(gè)用戶用于管理將要導(dǎo)入的一卡通ecexpressquery.DMP文件,輸入命令:
create user zhenghaipeng identified by 1211 default tablespace ecexpress;
(4)給創(chuàng)建的用戶授權(quán)
輸入命令: grant connect,resource,dba to zhenghaipeng; 授權(quán)zhenghaipenghp用戶擁有連接、資源管理及管理員權(quán)限。
(5)將一卡通原始數(shù)據(jù)文件導(dǎo)入到Oracle數(shù)據(jù)庫(kù)中
使用命令:imp zhenghaipeng/1211@orcl file= E:一卡通數(shù)據(jù)ecexpressquery.DMP full=y;
將ecexpressquery.DMP文件導(dǎo)入到Oracle數(shù)據(jù)庫(kù)。
對(duì)導(dǎo)入的一卡通數(shù)據(jù)進(jìn)行預(yù)處理,提取學(xué)生用戶有效數(shù)據(jù)特征。是對(duì)學(xué)生用戶數(shù)據(jù)進(jìn)行聚類分析的必要前提。處理好這一環(huán)節(jié)至關(guān)重要,對(duì)后續(xù)研究的開展具有決定性作用,因此,需要慎重處理這一環(huán)節(jié)。
(1)使用Oracle數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)工具SQL Developer創(chuàng)建一個(gè)新的連接,連接名設(shè)置為“一卡通數(shù)據(jù)預(yù)處理”,使用用戶zhenghaipeng、密碼:1211進(jìn)行連接登錄,查看每個(gè)表的表結(jié)構(gòu)及表中的記錄,發(fā)現(xiàn)其中TTNSMFLWING表為所有一卡通用戶的消費(fèi)流水?dāng)?shù)據(jù),共5 130 879條記錄,如圖1所示。
圖1 一卡通消費(fèi)流水?dāng)?shù)據(jù)表
(2)數(shù)據(jù)清洗。消費(fèi)流水?dāng)?shù)據(jù)表中包含了學(xué)校行政管理人員、專任教師及學(xué)生等一卡通用戶的相關(guān)數(shù)據(jù)。選取用戶卡號(hào)在2000043243—2000046280之間的用戶數(shù)據(jù)(這些卡號(hào)為2018級(jí)在校學(xué)生的校園一卡通卡號(hào)),創(chuàng)建Student_water數(shù)據(jù)表,獲取2018級(jí)在校學(xué)生在2018—2019學(xué)年度的全年消費(fèi)流水記錄,表記錄數(shù)由原來(lái)的513萬(wàn)條數(shù)據(jù)縮減至170萬(wàn)條,保留accid、amount、instime、trdid四個(gè)有效字段分別代表:用戶卡號(hào)、用戶單筆消費(fèi)金額、用戶刷卡消費(fèi)的日期和具體時(shí)間、用戶消費(fèi)終端pose機(jī)id,其中pose機(jī)id表示對(duì)應(yīng)的刷卡場(chǎng)所。
(3)數(shù)據(jù)分類。依據(jù)Student_water表中trdid字段對(duì)學(xué)生數(shù)據(jù)進(jìn)行分類,打開TBASMIRADE表,查看trd_id字段,找出代表食堂、超市、洗浴、圖書館等場(chǎng)所的trd_id的相關(guān)字段值,分別創(chuàng)建食堂消費(fèi)、超市消費(fèi)、洗浴消費(fèi)、圖書館閱讀等數(shù)據(jù)表,存儲(chǔ)學(xué)生相關(guān)數(shù)據(jù)記錄。用以區(qū)分學(xué)生刷卡記錄的不同場(chǎng)所。由于學(xué)生食堂消費(fèi)表Canteen_water中包含了學(xué)生的三餐記錄,需要進(jìn)一步細(xì)化,將學(xué)生的就餐時(shí)間分為6:00—8:30、11:00—13:30、17:00—19:30等三個(gè)時(shí)段。用于區(qū)分學(xué)生早餐、午餐、晚餐消費(fèi)記錄。最終生成了Breakfast_water、Lunch_water、Dinner_water、supermarket_water、Wash_water、Library_water六個(gè)數(shù)據(jù)表。
(4)數(shù)據(jù)整合。上述操作完成后,需要對(duì)Breakfast_water等六個(gè)表的數(shù)據(jù)進(jìn)行整合,比如:同一天學(xué)生早餐食堂刷卡記錄可能有多次,但統(tǒng)計(jì)時(shí)只算一次早餐用餐行為。需要?jiǎng)?chuàng)建新表將Breakfast_water數(shù)據(jù)表中的卡號(hào)和日期相同的多條記錄合并為一條記錄,在合并的過(guò)程中需要將amount字段值(刷卡金額)進(jìn)行累加,用于統(tǒng)計(jì)學(xué)生每次早餐消費(fèi)總金額。在創(chuàng)建Breakfast_amount表后,所有學(xué)生的每日早餐用餐總金額已經(jīng)確定,根據(jù)Breakfast_amount表中相同的accid字段值(學(xué)生卡號(hào))出現(xiàn)的次數(shù),來(lái)統(tǒng)計(jì)每位學(xué)生年度的早餐次數(shù)及年度早餐總額。經(jīng)過(guò)一系列的數(shù)據(jù)整合后生成了Breakfast_times_amount、Lunch_times_amount、Dinner_times_amount、Supermarket_times_amount、Wash_times_amount 、Library_times六個(gè)數(shù)據(jù)表。對(duì)整合后的六個(gè)表進(jìn)行合并操作(Breakfast_times_amount與Lunch_times_amount兩表合并過(guò)程實(shí)例如式1所示,然后再依次合并其他表,在此不再累述)。
create table b_l_times_amount as select Breakfast_times_amount.?,
Lunch_times_amount.Lunch_times, Lunch_times_amount.Lunch_amount
from Breakfast_times_amount full join Lunch_times_amount on Breakfast_times_amount.accid=Lunch_times_amount.accid;(式1)
最終將Breakfast_times_amount等六個(gè)表合并生成了Student數(shù)據(jù)表,包含了每位學(xué)生年度的早餐次數(shù)、早餐消費(fèi)總額、午餐次數(shù)、午餐消費(fèi)總額、晚餐次數(shù)、晚餐消費(fèi)總額、超市次數(shù)、超市消費(fèi)總額、洗浴次數(shù)、洗浴消費(fèi)總額、圖書館閱讀次數(shù)共十一個(gè)字段。祛除student表中字段值缺失值及無(wú)效記錄,得到了2 259條有效記錄,即采集2 259名2018級(jí)學(xué)生的相關(guān)數(shù)據(jù)作為研究對(duì)象,并從學(xué)校學(xué)工系統(tǒng)中采集了上述2 259名學(xué)生2018—2019學(xué)年度期末考試成績(jī)數(shù)據(jù)信息,依據(jù)學(xué)生的成績(jī)排名,利用公式:學(xué)生成績(jī)排名/班級(jí)總?cè)藬?shù),得到學(xué)生成績(jī)?cè)诎嗉?jí)的所處位置,(如該班級(jí)30人,學(xué)生成績(jī)排名第5,則該學(xué)生成績(jī)排名占比為16.66%,將成績(jī)的占比劃分為:前20%、21%—40%、41%—70%、71%—100%計(jì)做:1、2、3、4等四個(gè)等級(jí),其中等級(jí)為1代表成績(jī)優(yōu)秀),最后依據(jù)student表中的trdid對(duì)應(yīng)成績(jī)占比表中的trdid字段將成績(jī)占比表中的等級(jí)字段并入student表中,student表的相關(guān)信息,如圖2所示。
圖2 student數(shù)據(jù)表記錄截圖及記錄總數(shù)
為便于數(shù)據(jù)處理,將Student表從Oracle數(shù)據(jù)庫(kù)中導(dǎo)出,轉(zhuǎn)換為同名的excel文件。將之存放到數(shù)據(jù)倉(cāng)庫(kù)中,對(duì)數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)集進(jìn)行建模,采用SPSS軟件中的K-Means算法進(jìn)行聚類。并對(duì)聚類結(jié)果加以詳細(xì)分析。整體過(guò)程如圖3所示。
圖3 數(shù)據(jù)建模
3.1.1 學(xué)生各項(xiàng)消費(fèi)數(shù)據(jù)占比
依據(jù)2018級(jí)所有學(xué)生年度用餐的總額、超市消費(fèi)總額、洗浴消費(fèi)總額、各項(xiàng)消費(fèi)占比,如圖4所示,從中發(fā)現(xiàn)學(xué)生的消費(fèi)總額的80%左右用于三餐消費(fèi)、超市消費(fèi)和洗浴消費(fèi)較為接近,兩項(xiàng)消費(fèi)占比約20%。
3.1.2 學(xué)生每日用餐高峰期情況
統(tǒng)計(jì)學(xué)生每日三餐不同時(shí)段刷卡頻次(采樣:2018年5月4日至2018年6月3日時(shí)段的學(xué)生用餐信息),將每日三餐用餐時(shí)間以半小時(shí)為準(zhǔn)劃分為15個(gè)時(shí)段,分別用B1-B5、L1-L5、D1-D5表示早餐、午餐、晚餐各自的五個(gè)時(shí)段。獲取學(xué)生用餐規(guī)律曲線。從圖5中發(fā)現(xiàn)學(xué)生在工作日期間早餐、午餐、晚餐的用餐高峰期分別為:7:00—7:30、11:30—12:00、17:30—18:00,其主要由學(xué)校日常教學(xué)作息時(shí)間所致。學(xué)生一二節(jié)課上課時(shí)間為8:00,中午11:40放學(xué)、每天晚7點(diǎn)學(xué)生需要按照學(xué)校規(guī)定到固定教室上晚自習(xí)。故在工作日期間學(xué)生三餐的用餐高峰期的三個(gè)時(shí)段分布較為合理;節(jié)假日期間三餐用餐高峰期分別為:7:30—8:00、11:30—12:00、18:30—19:00,主要原因歸結(jié)為:周末學(xué)生早晨有充分休息的意愿,且周末沒(méi)有晚自習(xí)、故節(jié)假日早、晚餐用餐高峰期滯后一個(gè)時(shí)段。相同時(shí)段工作日與節(jié)假日平均刷卡頻次相差不大,主要因?yàn)閷W(xué)校新校區(qū)所在位置相對(duì)比較偏僻,周圍餐館離學(xué)校距離較食堂偏遠(yuǎn),故節(jié)假日學(xué)生也大部分選擇在食堂就餐。學(xué)生可以依據(jù)自己的作息時(shí)間合理地避開用餐高峰期。
圖 4 學(xué)生各項(xiàng)消費(fèi)數(shù)據(jù)占比
圖 5 三餐不同時(shí)段刷卡頻次
3.2.1 利用Python程序?qū)崿F(xiàn)手肘法,確定K-Means聚類中心最優(yōu)個(gè)數(shù)K值
(1)手肘法原理:隨著聚類中心個(gè)數(shù)K值的增加,聚類劃分會(huì)更加詳細(xì),每個(gè)聚類中心的聚合程度會(huì)逐步提高,那么誤差平方和SSE則會(huì)逐漸減小。當(dāng)K小于實(shí)際聚類個(gè)數(shù)時(shí),隨著K值的增大會(huì)大幅度加快聚類中心的聚合程度,加速誤差平方和SSE的下降幅度,一旦K達(dá)到實(shí)際聚類數(shù)時(shí),再次增加K所得到的聚合程度回報(bào)會(huì)急劇變小,SSE的下降趨勢(shì)驟減,繼而趨于平緩,即SSE和K的關(guān)系呈手肘狀,手肘位置的K值為最佳。
(2)手肘法Python語(yǔ)言實(shí)現(xiàn):(SSE和K的關(guān)系如圖6所示:即K=4為最佳)
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
Student_data = pd.read_excel(r'E:學(xué)生一卡通數(shù)據(jù)student.xlsx') # 讀入數(shù)據(jù)
SSE = [] # 存放每次結(jié)果的誤差平方和
for K in range(1,8): # K值取值范圍為1-8
estimator = KMeans(n_clusters=k) # 構(gòu)造聚類器
estimator.fit(Student_data [['早餐次數(shù)','午餐次數(shù)', '晚餐次數(shù)']])
SSE.append(estimator.inertia_)
X = range(1,8)
plt.xlabel('K') # X軸坐標(biāo)為:K值
plt.ylabel('SSE') # Y軸坐標(biāo)為:SSE
plt.plot(X,SSE,'o-')
plt.show() # 數(shù)據(jù)可視化,顯示K與SSE的關(guān)系圖
3.2.2 K-Means聚類分析
打開SPSS17軟件,導(dǎo)入student.xlsx文件,點(diǎn)擊菜單“分析”-->“分類”--> “K-均值聚類(k)”,彈出“K均值聚類分析”對(duì)話框,將學(xué)生的早餐次數(shù)、午餐次數(shù)、晚餐次數(shù)三個(gè)選項(xiàng)導(dǎo)入到“變量”一欄中,在聚類數(shù)(U)的文本框內(nèi)輸入數(shù)值4,迭代次數(shù)設(shè)置為100,對(duì)數(shù)據(jù)進(jìn)行聚類分析,最終經(jīng)過(guò)聚類獲取了4類學(xué)生個(gè)體的案例數(shù),選擇對(duì)聚類貢獻(xiàn)最大的兩個(gè)變量早餐次數(shù)和午餐次數(shù)做散點(diǎn)圖,如圖7:Y軸代表早餐,X軸代表午餐(數(shù)據(jù)經(jīng)Z-Score 標(biāo)準(zhǔn)化處理)。通過(guò)散點(diǎn)圖可以發(fā)現(xiàn)聚類效果較好,表明了本研究的有效性。
圖6 K與SSE關(guān)系圖
圖7 散點(diǎn)圖
3.2.3 學(xué)生群體行為分析
依據(jù)上述聚類結(jié)果,統(tǒng)計(jì)各類學(xué)生群體的相關(guān)指標(biāo)的總和、均值,做圖比較各類學(xué)生群體的各種行為規(guī)律和差異。
(1)學(xué)生群體不同場(chǎng)所消費(fèi)占比,如圖8所示。
第一、第二、第三類學(xué)生群體的三餐消費(fèi)分別占總體消費(fèi)的87%、80%、82%,其余消費(fèi)占13%、20%、18%。說(shuō)明這三類學(xué)生食堂就餐相對(duì)較為規(guī)律,第四類學(xué)生群體超市消費(fèi)占比46%比三餐消費(fèi)占44%還要多,說(shuō)明此類群體用餐習(xí)慣不規(guī)律,推測(cè)用餐習(xí)慣偏向于外賣。對(duì)比圖10和圖6發(fā)現(xiàn):圖6中整體學(xué)生用餐消費(fèi)占比81%,和前三類群體就餐占比的87%、80%、82%差距甚微,而第四類群體用餐占比僅占46%,間接說(shuō)明第四類群體的案例數(shù)相對(duì)較少,并沒(méi)有在較大程度上影響學(xué)生整體的用餐占比。四類學(xué)生群體的洗浴占比僅第二類超過(guò)了10%,說(shuō)明個(gè)人衛(wèi)生消費(fèi)在整個(gè)群體的消費(fèi)中不是主要支出。
圖8 各類學(xué)生群體不同場(chǎng)所消費(fèi)占比
(2)學(xué)生群體用餐行為分析,如圖9(下頁(yè))所示
第一類學(xué)生群體。早餐、午餐、晚餐次數(shù)均為最多,均高于其他三類群體。說(shuō)明第一類學(xué)生群體用餐習(xí)慣較好,擁有良好的生活作息時(shí)間,早晨不懶床,能夠按時(shí)吃三餐,自控力極強(qiáng)。
第二類學(xué)生群體。晚餐次數(shù)較第一類學(xué)生群體差距巨大,主要原因在于學(xué)校下午放學(xué)時(shí)間在4點(diǎn)15左右,到7點(diǎn)上晚自習(xí)之間時(shí)間比較充沛,此類學(xué)生可以自主安排晚餐,而早餐、午餐次數(shù)與第一類相比差距不太大,表明這類學(xué)生群體有一定的自我約束能力,能夠在大部分時(shí)間克制自己的惰性,維持較好的生活習(xí)性,有一定的自控力。
第三類學(xué)生群體。午餐、晚餐次數(shù)較前兩類有一定差距,不是特別大,而早餐次數(shù)較前兩類差距較大,說(shuō)明該群體不喜歡早起吃早飯,有懶床的可能性。即使晚餐時(shí)間寬裕也選擇在食堂就餐。因此,推測(cè)此類學(xué)生群體自控力較差、惰性較大,生活習(xí)慣需要進(jìn)一步改善(第三類群體和第二類群體雖有兩餐相對(duì)而言較為正常,但一定要區(qū)分其產(chǎn)生的本質(zhì)原因,差異對(duì)待)。
第四類學(xué)生群體。三餐次數(shù)與前三類學(xué)生群體相比,差距一目了然,幾乎很少或不去食堂吃飯,推測(cè)此類學(xué)生群體用餐傾向于外賣,自身的生活處于游離狀態(tài),與現(xiàn)實(shí)的校園生活相違背,生活軌跡已然發(fā)生了彎曲,此類學(xué)生群體自控力極差,生活萎靡、惰性十足。
(3)學(xué)生群體其他行為分析,如圖10所示
圖9 用餐行為次數(shù)統(tǒng)計(jì)
圖10 其他行為次數(shù)統(tǒng)計(jì)
第一類學(xué)生群體。洗浴、圖書館次數(shù)相比其他三類群體均為最多,說(shuō)明此類群體愛(ài)學(xué)習(xí)并注重個(gè)人衛(wèi)生,超市次數(shù)相對(duì)較少,說(shuō)明生活較節(jié)儉。
第二類學(xué)生群體。超市次數(shù)最少,說(shuō)明比較節(jié)儉,洗浴、圖書管次數(shù)與第一類相比差距不太,說(shuō)明比較愛(ài)學(xué)習(xí)和注意個(gè)人衛(wèi)生。表明了該類學(xué)生與第一類學(xué)生有許多相似之處,有成為第一類群體的潛力。
第三類學(xué)生群體。洗浴次數(shù)較前兩類群差距不大,說(shuō)明個(gè)人衛(wèi)生情況較好,超市次數(shù)稍多,但超市消費(fèi)占比并不大、圖書館次數(shù)較少,整體情況表明該類學(xué)生較為懶散、不太愛(ài)學(xué)習(xí),與前兩類學(xué)生群體有本質(zhì)上的差異。
第四類學(xué)生群體。洗澡次數(shù)與前三類無(wú)大的差異,個(gè)人衛(wèi)生較好;超市次數(shù)明顯高于其他三類學(xué)生群體,成了此類學(xué)生的主要消費(fèi)場(chǎng)所,圖書館次數(shù)最少,幾乎不去或很少去圖書館看書。說(shuō)明此類學(xué)生厭倦或討厭學(xué)習(xí)。
(4)學(xué)生用餐行為與其他行為關(guān)聯(lián)性分析
依據(jù)四類學(xué)生群體學(xué)習(xí)成績(jī)等級(jí)為優(yōu)秀的人次,統(tǒng)計(jì)每類群體的優(yōu)秀率,研究表明:第一、二、三、四類學(xué)生群體的優(yōu)秀率為分別為78.17%、54.52%、26.89%及5.73%。驗(yàn)證了學(xué)生用餐行為與學(xué)習(xí)行為之間存在明顯的關(guān)聯(lián)性。良好的用餐行為從側(cè)面反映了學(xué)生自身良好的自律性,這種自律可以延伸擴(kuò)展到學(xué)生的其他行為中,因此,擁有良好用餐行為的學(xué)生學(xué)習(xí)優(yōu)秀率也非常高;四類學(xué)生群體個(gè)人衛(wèi)生習(xí)慣均較好,說(shuō)明用餐行為與個(gè)人衛(wèi)生習(xí)性不具有關(guān)聯(lián)性。