聚類算法需要各變量間相關性較低,可以采用DataFrame的corr()函數進行相關性計算。另外,聚類的變量要區分離散值和非離散值。對於非離散變量,需要進行標準化或歸壹化;對於離散變量,可以轉換為虛擬變量,並采用{0, 1}編碼。建議采用min-max標準化,這樣和虛擬變量保持相同的相同範圍。
對於包含非離散變量和虛擬變量的數據集(通常情況),建議采用K-Prototype而非K-Means算法進行聚類。在使用時可以標記相關虛擬變量,確保區別處理(實際虛擬變量采用K-Modes,非離散變量采用K-Means,再基於權重a進行結果合並)。
KPrototypes(n_clusters=np).fit(df.values, categorical=[1, 2])
其中的1, 2代表df數據集中的第1, 2列(從0計數)。評估聚類算法可以基於輪廓系數,對比不同的K值,在業務允許範圍內得到最佳K值。建議的輪廓系數函數是silhouette_score,其最大值為1,越接近1越好,可以在不同算法情況下進行相對比較。
除輪廓系數外,還可以降維繪制散點圖(通過TSNE降維),按聚類算法分類對散點進行著色,進而直觀的進行聚類算法分類結果的判斷。
TSNE(n_components=2)
總結來說,整個聚類算法數據分析的操作步驟如下:
1. 構建低相關性變量數據集(通過給高相關性變量設置固定值);
2. 對非離散變量進行min-max歸壹化操作;
3. 對包含虛擬變量的數據集采用K-Prototype聚類算法,對只包含非離散變量的數據集采用K-Means算法;
4. 通過輪廓系數silhouette_score對K值進行循環測試,得到最佳K值;
5. 通過TSNE將數據集降維為兩維顯著特征值,並通過散點圖,配合聚類算法分類結果配色對聚類算法分類結果進行合理判斷;
6. 對聚類算法分類結果,結合業務邏輯進行解釋,確保分類結果支撐業務分析。