武麗芬,張鴻雁
(晉中學(xué)院 信息技術(shù)與工程學(xué)院,山西 晉中 030619)
提高人才培養(yǎng)質(zhì)量已經(jīng)成為國內(nèi)外高等教育實現(xiàn)大眾化以后最為緊迫的任務(wù),而準(zhǔn)確的人才培養(yǎng)目標(biāo)定位則是提高質(zhì)量的前提[1].
專業(yè)基礎(chǔ)課程關(guān)注學(xué)生該專業(yè)的基本科學(xué)文化素養(yǎng),追求知識與技能的基礎(chǔ)性、系統(tǒng)性,為學(xué)生的一般發(fā)展奠定基礎(chǔ).但是,隨著知識的發(fā)展,知識在不斷走向分化和細(xì)化,知識的不斷分化與細(xì)化使傳統(tǒng)基礎(chǔ)課程很難反映人類知識的當(dāng)代成就,滯后于知識的發(fā)展,而專業(yè)任選課程則可以彌補(bǔ)必修課的不足,它一方面可以對必修課的內(nèi)容進(jìn)行拓展或深化,另一方面,又可以發(fā)展學(xué)生的技能、特長[1].因此專業(yè)任選課在學(xué)生的培養(yǎng)環(huán)節(jié)上作用不容忽視.
專業(yè)任選課是指根據(jù)學(xué)分制培養(yǎng)目標(biāo)和要求,為學(xué)生開設(shè)的專業(yè)選修課程,旨在促進(jìn)學(xué)生在課程中的選擇性,擴(kuò)大學(xué)生的知識范圍,提高學(xué)生的智能結(jié)構(gòu)[2].
就晉中學(xué)院而言,目前專業(yè)任選課的開設(shè)目前存在如下弊端:
1.該課程的設(shè)置比較隨意,因人設(shè)課的現(xiàn)象很普遍,教學(xué)過程中的隨意性更是突出.
2.沒有考慮學(xué)生的主、客觀情況,有悖專業(yè)任選課的初衷.
由于沒有考慮學(xué)生的個體因素,很多學(xué)生覺得沒有興趣或不適合自己或?qū)ψ约旱奈磥頉]用,諸多原因?qū)е聲缯n率嚴(yán)重,即使因紀(jì)律約束來到教室,也是身在曹營心在漢.學(xué)生認(rèn)為來上課是在浪費時間,對課程內(nèi)容嚴(yán)重不滿.經(jīng)常聽到學(xué)生抱怨:“給我們上這個課有什么用,理論性太強(qiáng)也太難,給我們開點有用的課吧.”學(xué)生情緒上如此抵觸,導(dǎo)致所開設(shè)課程的意義全無.
但是何為有用課程,每屆學(xué)生情況各不相同,有的學(xué)生適合學(xué)術(shù)研究,就希望開設(shè)該專業(yè)的前沿課程,為今后繼續(xù)深造打下基礎(chǔ);有的學(xué)生適合技術(shù)應(yīng)用,就希望開設(shè)當(dāng)今社會正在流行的應(yīng)用軟件,為今后就業(yè)提供一技之長;還有的學(xué)生迷茫懵懂,不知自己究竟想學(xué)習(xí)什么.因此我們不能簡單照搬照抄官方規(guī)定或名校經(jīng)驗,而應(yīng)該有一套合理的方法,分析每一屆學(xué)生的特點,既不拔高也不貶低,既不越位也不缺位,實事求是,因材施教,因材施管,保證不同素質(zhì)特點的學(xué)生健康成長,成人成材.
綜上述所,可以考慮給學(xué)生一定的自由度讓他們自己選擇,然而新的問題又出現(xiàn)了.當(dāng)面臨選擇時,學(xué)生開始困惑和迷茫了,不知道自己選擇哪門課程好,患得患失.這也是中國學(xué)生普遍存在的問題,不善于為自己做出選擇.
鑒于上述情況,基于數(shù)據(jù)挖掘中的聚類算法設(shè)計一個學(xué)生專業(yè)特點分類器,對學(xué)生進(jìn)行一個大致的分類(理論研究型、實踐應(yīng)用型、技能型等),以輔助教師和學(xué)生正確合理的開設(shè)相應(yīng)的專業(yè)任選課,使得教學(xué)更順利地進(jìn)行,學(xué)生更加學(xué)有所獲.
聚類是指將具體或抽象對象的集合分組成由類似對象組成的多個類或簇的過程.聚類必須同時滿足以下兩個條件:1)每個簇至少包含一個數(shù)據(jù)對象;2)每個數(shù)據(jù)對象必須屬于且唯一屬于一個簇[3].在實際應(yīng)用中,簇中的數(shù)據(jù)對象可以作為一個整體來對待.
聚類主要包括以下幾個過程:
(A)數(shù)據(jù)準(zhǔn)備:主要指特征標(biāo)準(zhǔn)化和降低維度.
(B)特征選擇和提取:從原始數(shù)據(jù)特征中選擇有效特征,并存儲于向量中.
(C)提取特征:通過對選擇的特征進(jìn)行轉(zhuǎn)換,形成新特征.
(D)聚類:選擇適合特征類型的距離函數(shù)進(jìn)行度量,而后執(zhí)行聚類.
K-means[1]算法也稱作K-平均值算法或K均值算法,于1967年由MacQueen提出[2],其原理簡單,運(yùn)算速度快,但它的明顯不足是:使用完全隨機(jī)選擇初始化聚類中心點的策略,使K-means算法容易陷入局部最優(yōu)解,同時對離群點和噪音數(shù)據(jù)較為敏感,這不僅影響了算法的準(zhǔn)確性,而且大大降低了算法效率.
針對上述問題專家學(xué)者們不斷提出新的解決方法,其中比較著名的有蜂群算法,該算法是一種非數(shù)值優(yōu)化計算方法,也是一種較為新穎的全局優(yōu)化算法[3],具有結(jié)構(gòu)簡單,控制參數(shù)少、易于實現(xiàn)的特點.
蜂群算法基本工作原理如下[4]:
步驟1:初始化蜂群.
確定種群的大小,運(yùn)用構(gòu)造啟發(fā)式算法和隨機(jī)產(chǎn)生方式生成初始種群,比較所有種群個體,按適應(yīng)度值從大到小進(jìn)行排序,排在第一位的個體即定義為蜂王,其余個體為雄峰集合.
步驟2:蜂王婚飛行為.
反復(fù)執(zhí)行步驟2至步驟6若干次,直到產(chǎn)生的子代個體數(shù)達(dá)到種群原始大小.
初始化蜂王受精囊容量和飛行速度,飛行速度Squeen通過式(1)隨機(jī)生成:
Squeen(speed)=rand()(Smax-Smin)+Smin.
(1)
式(1)中,rand()是隨機(jī)函數(shù),Smax、Smin分別是蜂王最大、最小速度的初始值.當(dāng)Squeen(speed)<=Smin,則返回蜂巢.
步驟3:隨機(jī)選擇一個雄峰個體,計算其被蜂王選擇的概率.概率Prob(D)的計算式為:
Prob(D)=exp(-|fqueen-fdrone|/Speed(t)).
(2)
式(2)中,fqueen是蜂王的目標(biāo)函數(shù)值;fdrone是雄峰的目標(biāo)函數(shù)值.
步驟4:產(chǎn)生隨機(jī)數(shù)R(0<=R<=1),如果Prob(D)>=R,則將該雄峰的遺傳信息存儲到蜂王的受精囊中,同時從雄峰集合中刪除該雄峰.
不管雄峰的基因是否能夠存儲到蜂王搜精囊中,蜂王的飛行速度都按式(3)降低.返回步驟5,直到Squeen(speed)<=Smin,或者蜂王受精囊的容量已滿.
Speed(t+1)=α×Speed(t).
(3)
式(3)中,α∈(0,1),是每次蜂王速度減小的數(shù)量級.
步驟5:產(chǎn)生子代,通過對蜂王及蜂王所存儲的雄峰基因個體的交叉產(chǎn)生子代種群個體.
步驟6:培育后代,由工蜂對子代個體進(jìn)行培育.
步驟7:用新生子代種群集合替換原始種群,并按照其適應(yīng)度值從大到小排列.
步驟8:檢查算法終止條件,如果滿足,則終止算法,輸出最優(yōu)解;否則,返回步驟2繼續(xù)執(zhí)行[4].
①采集數(shù)據(jù):提取晉中學(xué)院計算機(jī)專業(yè)某屆學(xué)生大一到大三的成績數(shù)據(jù).
②對數(shù)據(jù)進(jìn)行清洗和預(yù)處理:
A.特征選擇和提取
從教務(wù)系統(tǒng)中采集的數(shù)據(jù)維度高達(dá)56列,經(jīng)過削減、歸類、課程分析最終留下了10列能夠反映學(xué)生計算機(jī)水平的專業(yè)主干課程.在此過程中對多個表數(shù)據(jù)進(jìn)行合并,篩選相同的課程,從而獲取選課人數(shù)較多的課程;對其中一些非正常數(shù)據(jù)如“缺考”等用平均分進(jìn)行相應(yīng)替換.
B.清洗數(shù)據(jù)
現(xiàn)實世界中大多數(shù)的數(shù)據(jù)庫均包含異常數(shù)據(jù)、不明確數(shù)據(jù)和噪聲數(shù)據(jù),而幾乎所有的聚類算法對這樣的數(shù)據(jù)都非常敏感并會導(dǎo)致獲得較差的聚類結(jié)果[大數(shù)據(jù)書本].
本數(shù)據(jù)源中刪除了成績在10分以下的考生數(shù)據(jù)并對缺失數(shù)據(jù)進(jìn)行均值填充,清洗后的數(shù)據(jù)如表1所示.
表1 參與聚類分析的數(shù)據(jù)表
實驗工具選擇Python.Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C(jī)程序設(shè)計語言,由荷蘭人Guido van Rossum發(fā)明,其源代碼和解釋器都遵循GPL(General Public License)協(xié)議,是一款純粹的自由軟件.
Python由于其簡潔的語法、較為全面的功能、可移植性和可擴(kuò)展性的特點,目前越來越多的科研機(jī)構(gòu)在采用Python做科學(xué)計算,還有很多知名大學(xué)的程序設(shè)計課程在采用Python講授,比如麻省理工學(xué)院的計算機(jī)科學(xué)編程導(dǎo)論和卡耐基梅隆大學(xué)的編程基礎(chǔ)就用的是Python語言[5].
實驗中部分關(guān)鍵代碼如下:
#將原始數(shù)據(jù)中的索引設(shè)置成得到的數(shù)據(jù)類別,根據(jù)索引提取各類數(shù)據(jù)并保存
df=pd.DataFrame(X,index=labels,columns=columns)
df_list=[]
foriinrange(X_col):
df_list.append(df[df.index==i])
#繪圖
plt.figure(figsize=(10,8),dpi=80)
#axes=plt.subplot()
#s表示點大小,c表示color,marker表示點類型
foriinrange(X_col):
plt.plot(range(X_row),X[:,i],color[i])
#顯示聚類中心數(shù)據(jù)點
#type_center=plt.plt(range(X_col),df_center.loc[:,'y'],s=40,c='blue')
plt.xlabel('x',fontsize=16)
plt.ylabel('y',fontsize=16)
#axes.legend((type1,type2,type3,type4,type_center),('0','1','2','3','center'),loc=1)
plt.show()
實驗結(jié)果用散點圖展示如圖1所示.
圖1 聚類結(jié)果散點圖
其中藍(lán)色實點為聚類中心,其中心分別為(83.446,86.825)、(81.698,52.571)、(55.815,48.982)、(67.2,75.11).“0”“1”“2”“3”分別表示“理論型”“應(yīng)用型”“綜合型”“技能型”.
實驗結(jié)果分析,通過聚類模型預(yù)演,得出該屆學(xué)生理論型(紅色聚類區(qū))人數(shù)居多,且分布相對集中,那么在開設(shè)選修課的時候,可以主要考慮這部分學(xué)生的情況,這部分學(xué)生中絕大部分是要考研的,那么在開設(shè)選修課時可傾向于這部分學(xué)生開設(shè)研究生階段的前沿、本科生階段的擴(kuò)張課程.圖中還可以看出棕色聚類區(qū)也相對集中,但人數(shù)沒有紅色區(qū)域多,那么也可適當(dāng)考慮開設(shè)一些應(yīng)用型選修課程.
該模型同樣可以適用于其他專業(yè),前提是需要對開設(shè)課程進(jìn)行分類處理,按照分類結(jié)果對聚類樣本進(jìn)行有效聚類,可以根據(jù)學(xué)生對知識的理論水平、應(yīng)用實踐能力的相似程度進(jìn)行學(xué)生分類,有的放矢地開設(shè)選修課程,一定程度上實現(xiàn)真正的因材施教.