Fuzzy C Means 算法及其 Python 實現
1.
算法向
算法的擴展
在 算法中,如果要將數據集合
划分為
個類,使得任意數據對象
必須屬於並且僅屬於一個類,同時每一個類至少包含一個數據對象,那么可以用一個
的矩陣
來表示,矩陣中的任意一個元素
可以表示為:
其中 表示第
個類。並且
需要滿足如下條件
:
如果上述矩陣 中的元素
的取值范圍不僅僅是 0 或者 1,那么就可以推廣到模糊集合上的划分,
就變成了模糊判定矩陣。此時
需滿足:
(1)
2. 目標函數與聚類中心
算法在度量數據對象的非相似性(或者說距離)時一般使用歐幾里得距離,要求每個類的聚類中心與數據對象的距離平方之和最小,目標函數可以表示為:
其中 表示任意聚類中心,而聚類中心一般取類內所有對象在各屬性上的平均值,因此可以表示為:
表示任意一個類。
將算法推廣到模糊集后, 對樣本與類中心之間的距離采用隸屬度的平方來加權,
則進一步引入了隸屬度的加權指數
從而得到了新的目標函數:
(2)
要使得 (2) 式達到最小值則要求聚類中心 和隸屬度
滿足如下條件:
(3)
(4)
3.
算法計算過程
見原文和代碼實現