邵小青 賈鈺峰 章蓬偉 丁 娟
(新疆科技學院信息科學與工程學院,新疆 庫爾勒 841000)
機器學習中有兩類大問題:一個是聚類,另一個是分類。聚類是統(tǒng)計學的概念,屬于非監(jiān)督機器學習(unsupervised learning),應用中數(shù)據(jù)挖掘,數(shù)據(jù)分析等領域,根據(jù)數(shù)據(jù)不同特征,將其劃分為不同的數(shù)據(jù)類,屬于一種無監(jiān)督學習方法。它的目的是使得屬于同一類別個體之間的密度盡可能的高,而不同類別個體間的密度盡可能的低[1]。分類是用已知的結(jié)果類別訓練數(shù)據(jù),對預測數(shù)據(jù)進行預測分類,屬于有監(jiān)督學習(supervised learning),常見的算法如邏輯回歸、支持向量機、深度學習等。聚類也是對數(shù)據(jù)進行歸類,不過聚類算法的訓練數(shù)據(jù)只有輸入,事先并不清楚數(shù)據(jù)的類別,通過特征的相似性對文本進行無監(jiān)督的學習分類。聚類試圖將數(shù)據(jù)集中的樣本劃分為若干個通常不相交的子集,每個子集稱為一個簇(cluster)[2]。K-means 屬于經(jīng)典聚類算法,根據(jù)樣本間的距離或者相異性進行聚類,把特征相似的樣本歸為一類,相異的樣本歸為不同的簇。
While(t) t 為迭代次數(shù)
For i in range(n+1): #n 為樣本點個數(shù)。
For j in range(k+1): #k 為簇的數(shù)目。
For i in range(k+1): #計算樣本i 到每個簇質(zhì)點j 的距離。
找出屬于這個簇中的所有數(shù)據(jù)點,計算這類的質(zhì)心。重復以上步驟,直到每類質(zhì)心變化小于設定的閾值或者達到最大的迭代次數(shù)。設置最大特征數(shù),設置分類的組K 值,訓練特征數(shù)據(jù)進行數(shù)據(jù)分析。
本文將數(shù)據(jù)過濾清洗,去除停用詞轉(zhuǎn)化為向量模型,使用TF-IDF 算法對詞頻進行權(quán)重計算,TF 是詞頻,IDF 是逆文檔頻率,TF-IDF 反應了一個詞在文本中的重要性它的值是TF×IDF。 使 用 Python 中 的 sklearn 模 塊 的 TfidfTransformer、CountVectorizer 方法計算TF-IDF 值,轉(zhuǎn)化為空間向量模型,選用K-means 聚類算法對數(shù)據(jù)進行挖掘與分析。
本文選擇新疆科技學院某專業(yè)期末作為分析對象,選取大學信息技術基礎和C 語言程序設計成績作為實驗數(shù)據(jù)。利用Python 聚類模塊K-means 構(gòu)建聚類模型并實例化,設置分類K=5 值。其中K 值選取直接影響K-means 算法的準確性,選取K值常見的方法有手肘法、Gap statistic 方法。下一步訓練特征數(shù)據(jù),查看聚類結(jié)果labels,對數(shù)據(jù)進行聚類分析,部分代碼如下。
通過對數(shù)據(jù)聚類分析表明成績可以大致分為4 類,其中大學信息技術基礎學生成績較好,C 語言程序設計對學生有一定難度,想要提高總體成績,需要重點放到在C 語言程序設計這門課上,建議優(yōu)化教學設計,采取任務驅(qū)動式教學,分層次因材施教,培養(yǎng)好學生的計算思維能力,為后面的專業(yè)課打好基礎。
K-means 具有實現(xiàn)簡單,應用廣泛等優(yōu)點,但由于需要指定K 值簇,直接影響分類的準確性,聚類結(jié)果可能會收斂到局部最小值。對于不規(guī)則形狀的數(shù)據(jù)效果差。在現(xiàn)實生活中,簇并不總是均勻分布的,并且特征的權(quán)重很少相等。本文對期末成績數(shù)據(jù)進行聚類分析是cluser 設置成5,有一定的滿目性,通過迭代9 次各組數(shù)據(jù)達到收斂。下一步要提高數(shù)據(jù)集的數(shù)量,選擇學生所有的成績數(shù)據(jù),合理選擇K 值,高維映射等,優(yōu)化K-means 算法,更客觀地進行數(shù)據(jù)分析。