概念:
聚類分析(cluster analysis ):是一組將研究對象分為相對同質的群組(clusters)的統計分析技術。聚類分析也叫分類分析,或者數值分類。聚類的輸入是一組未被標記的樣本,聚類根據數據自身的距離或者相似度將其划分成若干個組,划分的原則是組內距離最小化而組間(外部)距離最大化。聚類和分類的不同在於:聚類所要求划分的類是未知的。
聚類度量的方法:分距離和相似度來度量。
聚類研究分析的方法:
1.層次的方法(hierarchical method)
2.划分方法(partitioning method)
3.基於密度的方法(density-based method)DBSCAN
4.基於網格的方法(grid-based method)
5.基於模型的方法(model-based method)
•K-Means 算法:
•受離群點的影響較大,由於其迭代每次的中心點到全部樣本點的距離和的平均值。
優點:
- 原理簡單
- 速度快
- 對大數據集有比較好的伸縮性
缺點:
- 需要指定聚類 數量K
- 對異常值敏感
- 對初始值敏感
•以歐式距離來衡量距離大小,使用誤差平方和(Sum of the Squared Error,SSE)作為聚類的目標函數:
k表示k個聚類中心,ci表示第幾個中心,dist表示的是歐幾里得距離
•算法步驟;
•創建k個點作為初始的質心點(隨機選擇)
•當任意一個點的簇分配結果發生改變時
• 對數據集中的每一個數據點
• 對每一個質心
• 計算質心與數據點的距離
• 將數據點分配到距離最近的簇
• 對每一個簇,計算簇中所有點的均值,並將均值作為質心
•算法圖示:
Python代碼實現K-Means算法:
有關於 .A 的用法:(flatten()函數可以是多維數組變換成一維數組, .A 則使得matrix 形式轉化成 array 形式)
#定義一個歐式距離的函數 :
隨機設置k個中心點:
定義KMeans函數:
python中kmeans的參數:
•基於密度的方法;
•DBSCAN (需要指定半徑,對離群點的尋找作用很大):
•大圓:核心對象,周圍半徑內有多於min_samples 個點
•小圓:非核心對象,周圍少於 min_samples 個點
•黑色點:離群點和任何核心對象之間的距離大於閾值
參考:https://blog.csdn.net/taoyanqi8932/article/details/53727841