夏汛



摘要:科研水平是衡量高校發展的一個重要指標,科研對高校的意義和深遠價值不言而喻。本文以瀘州職業技術學院為例,通過獲取瀘州職業技術學院的科研論文和科研數據,經過權重設置,歸一化處理后,運用k-means聚類算法,分析出整個學院的科研全貌,從而為領導的各項決策提供數據支撐。
關鍵詞:科研;k-means;聚類算法
中圖分類號:F239.1 文獻標識碼:A 文章編號:1007-9416(2019)12-0098-02
1 K-means算法介紹
K-means算法,也被稱為K-均值或K-平均算法,是一種廣泛使用的聚類算法。K-means算法是基于相似性的無監督的算法,通過比較樣本之間的相似性,將較為相似的樣本劃分到同一類別中。由于K-means算法簡單、易于實現的特點, K-means算法得到了廣泛的應用。
2 數據準備
通過爬取瀘州職業技術學院科研管理系統和知網的科研數據,并將相應的成果賦予一定的權重,取得的科研項目和科研成果分析如圖1所示。
3 數據預處理
因為各個指標評價分值不通,為統一標準,使用z-score對數據化做歸一化處理。
z分數公式如公式1所示:
(1)
其中μ為總體平均值,X-μ為離均差,σ表示總體標準偏差。z的絕對值表示在標準差范圍內的原始分數與總體均值之間的距離。當原始分數低于平均值時,z為負,以上為正。
經過歸一化處理后,指標分值如圖2所示。
4 確定聚類數量
因為該分析中不確定聚類的數量,那么可以通過肘部法則這一技術來估計聚類數量。肘部法則會把不同值的成本函數值畫出來。隨著值的增大,平均畸變程度會減小;每個類包含的樣本數會減少,于是樣本離其重心會更近。但是,隨著值繼續增大,平均畸變程度的改善效果會不斷減低。值增大過程中,畸變程度的改善效果下降幅度最大的位置對應的值就是肘部。如圖3所示。
可以看出,聚類數量應設定為3。
繪制該圖的python代碼如下:
df_features = pd.read_csv(r'G:\計算.csv', encoding='utf-8')? # 讀入數據
'利用SSE選擇k'
SSE = []? # 存放每次結果的誤差平方和
for k in range(1, 9):
estimator = KMeans(n_clusters=k)? # 構造聚類器
estimator.fit(df_features[['R', 'M']])
SSE.append(estimator.inertia_)
X = range(1, 9)
plt.xlabel('k')
plt.ylabel('SSE')
plt.plot(X, SSE, 'o-')
plt.show()
5 使用K-means算法計算聚類
繼續使用上述數據,進行聚類的繪制。
python的關鍵代碼如下:
##計算歐式距離
def distEuclid(x, y):
return np.sqrt(np.sum((x - y) ** 2))
## 初始化簇中心點 一開始隨機從樣本中選擇k個 當做各類簇的中心
def initCentroid(data, k):
num, dim = data.shape
centpoint = np.zeros((k, dim))
l = [x for x in range(num)]
np.random.shuffle(l)
for i in range(k):
index = int(l[i])
centpoint[i] = data[index]
return centpoint
##進行KMeans分類
def KMeans(data, k):
##樣本個數
num = np.shape(data)[0]
##記錄各樣本 簇信息 0:屬于哪個簇 1:距離該簇中心點距離
cluster = np.zeros((num, 2))
cluster[:, 0] = -1
##記錄是否有樣本改變簇分類
change = True
##初始化各簇中心點
cp = initCentroid(data, k)
while change:
change = False
##遍歷每一個樣本
for i in range(num):
minDist = 9999.9
minIndex = -1
##計算該樣本距離每一個簇中心點的距離 找到距離最近的中心點
for j in range(k):
dis = distEuclid(cp[j], data[i])
if dis < minDist:
minDist = dis
minIndex = j
##如果找到的簇中心點非當前簇 則改變該樣本的簇分類
if cluster[i, 0] != minIndex:
change = True
cluster[i, :] = minIndex, minDist
## 根據樣本重新分類? 計算新的簇中心點
for j in range(k):
pointincluster = data[[x for x in range(num)
if cluster[x, 0] == j]]
cp[j] = np.mean(pointincluster, axis=0)
6 數據結論
通過最終得到的聚類圖,結論如下:
(1)教師可以分為A、B、C三大類;(2)A類教師在科研項目、學術論文方面均明顯高于其它教師,學院的科研項目、核心期刊主要由這部分教師完成,可視為優秀科研型教師;(3)B類教師水平較為中庸,在科研項目和學術論文方面均有所產出,但在核心期刊方面產出較少,可視為科研項目型教師;(4)C類教師產出較低,在科研項目和學術論文方面只有極低產出,或者只有一方面有產出,該部分教師基本未參與科研;(5)注意到聚類圖里的幾個離散點,數量較少,僅有幾名,可視為科研領軍型人物,在科研項目和學術論文方面均遙遙領先。
參考文獻
[1] 張海林,李琳,夏傳良.改進K-means算法的饋線線損計算[J].軟件導刊,2019(11):1-5.
[2] 程士卿,郝問裕,李晨,等.低秩張量分解的多視角譜聚類算法[J].西安交通大學學報,2019(03):1-7.
The Analysis of? Talent Evaluation in Colleges and Universities Based on K-means Clustering Algorithm
——Taking Luzhou Vocational and Technical College as an Example
XIA Xun
(Luzhou Vocational & Technical College,Luzhou? Sichuan? 646005)
Abstract:the level of scientific research is an important indicator to measure the development of colleges and universities. The significance and far-reaching value of scientific research to colleges and universities are self-evident. This paper takes Luzhou vocational and Technical College as an example, through obtaining the scientific research papers and data of Luzhou vocational and technical college, after weight setting and normalization processing, using k-means clustering algorithm, analyzes the scientific research panorama of the whole college, so as to provide data support for leaders' decisions.
Key words:scientific research;k-means;clustering algorithm