一、GapStatistic概述
GapStatistic是一種確定聚類數量的統計方法,通過比較一組數據在k個聚類情況下的誤差平方和,給出最佳的聚類數。
其核心思想是將原始數據集與隨機分布數據集進行比較,即對原始數據集中每個維度生成一個符合相同分布的隨機數據集,從而得到空隙統計量。在聚類數目選定前後,我們比較實際數據的空隙統計量和期望隨機數據的空隙統計量來計算Gap Statistic值。Gap Statistic值最大的位置對應於使分組更優,使得實際觀測數據的空隙統計量顯著高於基準隨機數據集的空隙統計量的k值。
下面我們著重分析GapStatistic在聚類分析中的應用。
二、GapStatistic在聚類分析中的應用
1、GapStatistic在KMeans中的應用
KMeans演算法是最常見的聚類演算法之一,而GapStatistic可以在KMeans中用於選擇最佳聚類數量。
import numpy as np
from sklearn.cluster import KMeans
from gap_statistic import OptimalK
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
optimalK = OptimalK(n_jobs=4, parallel_backend='joblib')
n_clusters = optimalK(X, cluster_array=np.arange(1, 10))
kmeans = KMeans(n_clusters=n_clusters,
random_state=0).fit(X)
labels = kmeans.labels_
首先我們需要導入相應的庫和數據,接著使用OptimalK函數確定最佳聚類數量n_clusters,最後用n_clusters聚類並擬合數據(使用KMeans演算法)。
2、GapStatistic在DBSCAN中的應用
DBSCAN也是一種流行的聚類演算法,使用GapStatistic可以更加直觀地確定最佳的epsilon值和min_samples值。
from sklearn.neighbors import NearestNeighbors
from gap_statistic import OptimalDensityKmeans
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
# find k
nbrs = NearestNeighbors(n_neighbors=10).fit(X)
distances, indices = nbrs.kneighbors(X)
my_optimal_cluster = OptimalDensityKmeans(X, indices=indices)
k = my_optimal_cluster.n_clusters
# cluster points
labels = my_optimal_cluster.labels_
首先我們還是需要導入相關的庫和數據,接著我們使用NearestNeighbors計算每個數據點到其最近鄰的距離,然後使用OptimalDensityKMeans確定最佳簇數k,並且聚類。這裡通過indices參數將數據傳遞給OptimalDensityKMeans。
3、GapStatistic在層次聚類中的應用
層次聚類是一種遞歸的聚類方法,可以根據距離或相似度將樣本分成一組組。GapStatistic可以在層次聚類中用於確定最佳的聚類數量。
from scipy.spatial.distance import pdist, squareform
from gap_statistic import OptimalClusters
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
distance_mat = pdist(X, metric='euclidean')
distance_mat = squareform(distance_mat)
optimal_clusters = OptimalClusters(n_jobs=4)
n_clusters = optimal_clusters(distance_mat)
在層次聚類中,我們需要計算樣本之間的距離(在這裡使用了歐幾里得距離),然後將距離矩陣傳遞給OptimalClusters函數,該函數可以確定最佳聚類數量。
三、總結
今天我們介紹了GapStatistic在聚類分析中的應用,GapStatistic方法可以用於選擇最佳聚類數量,同時也可以通過與其他方法相結合,來更好地實現聚類分析的目標。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/297859.html
微信掃一掃
支付寶掃一掃