邵小青 賈鈺峰 章蓬偉 丁 娟
(新疆科技學院信息科學與工程學院,新疆 庫爾勒 841000)
機器學習中有兩類大問題:一個是聚類,另一個是分類。聚類是統計學的概念,屬于非監督機器學習(unsupervised learning),應用中數據挖掘,數據分析等領域,根據數據不同特征,將其劃分為不同的數據類,屬于一種無監督學習方法。它的目的是使得屬于同一類別個體之間的密度盡可能的高,而不同類別個體間的密度盡可能的低[1]。分類是用已知的結果類別訓練數據,對預測數據進行預測分類,屬于有監督學習(supervised learning),常見的算法如邏輯回歸、支持向量機、深度學習等。聚類也是對數據進行歸類,不過聚類算法的訓練數據只有輸入,事先并不清楚數據的類別,通過特征的相似性對文本進行無監督的學習分類。聚類試圖將數據集中的樣本劃分為若干個通常不相交的子集,每個子集稱為一個簇(cluster)[2]。K-means 屬于經典聚類算法,根據樣本間的距離或者相異性進行聚類,把特征相似的樣本歸為一類,相異的樣本歸為不同的簇。

While(t) t 為迭代次數
For i in range(n+1): #n 為樣本點個數。
For j in range(k+1): #k 為簇的數目。
For i in range(k+1): #計算樣本i 到每個簇質點j 的距離。
找出屬于這個簇中的所有數據點,計算這類的質心。重復以上步驟,直到每類質心變化小于設定的閾值或者達到最大的迭代次數。設置最大特征數,設置分類的組K 值,訓練特征數據進行數據分析。
本文將數據過濾清洗,去除停用詞轉化為向量模型,使用TF-IDF 算法對詞頻進行權重計算,TF 是詞頻,IDF 是逆文檔頻率,TF-IDF 反應了一個詞在文本中的重要性它的值是TF×IDF。 使 用 Python 中 的 sklearn 模 塊 的 TfidfTransformer、CountVectorizer 方法計算TF-IDF 值,轉化為空間向量模型,選用K-means 聚類算法對數據進行挖掘與分析。
本文選擇新疆科技學院某專業期末作為分析對象,選取大學信息技術基礎和C 語言程序設計成績作為實驗數據。利用Python 聚類模塊K-means 構建聚類模型并實例化,設置分類K=5 值。其中K 值選取直接影響K-means 算法的準確性,選取K值常見的方法有手肘法、Gap statistic 方法。下一步訓練特征數據,查看聚類結果labels,對數據進行聚類分析,部分代碼如下。



通過對數據聚類分析表明成績可以大致分為4 類,其中大學信息技術基礎學生成績較好,C 語言程序設計對學生有一定難度,想要提高總體成績,需要重點放到在C 語言程序設計這門課上,建議優化教學設計,采取任務驅動式教學,分層次因材施教,培養好學生的計算思維能力,為后面的專業課打好基礎。
K-means 具有實現簡單,應用廣泛等優點,但由于需要指定K 值簇,直接影響分類的準確性,聚類結果可能會收斂到局部最小值。對于不規則形狀的數據效果差。在現實生活中,簇并不總是均勻分布的,并且特征的權重很少相等。本文對期末成績數據進行聚類分析是cluser 設置成5,有一定的滿目性,通過迭代9 次各組數據達到收斂。下一步要提高數據集的數量,選擇學生所有的成績數據,合理選擇K 值,高維映射等,優化K-means 算法,更客觀地進行數據分析。