sklearn.cluster.KMeans?

class sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='deprecated', verbose=0, random_state=None, copy_x=True, n_jobs='deprecated', algorithm='auto')

[源碼]

K-均值聚類

用戶指南中閱讀更多內容。

參數 方法
n_clusters int, default=8
要形成的簇數以及要生成的質心數。
init {‘k-means++’, ‘random’, ndarray, callable}, default=’k-means++’
初始化方法:
‘k-means++’:明智地選擇初始聚類中心進行k均值聚類,加快收斂速度.有關詳細信息,請參閱k_init中的Notes部分。
‘random’:從初始質心的數據中隨機選擇n_clusters觀測(行)。
如果一個ndarray被傳遞,它應該是形狀的(n_clusters, n_features),并給出初始中心。
如果傳遞了一個可調用函數,它應該接受參數X、n_clusters和一個隨機狀態,并返回一個初始化。
max_iter int, default=300
相對容忍度與Frobenius范數, 連續兩次迭代之間的聚類中心的差異聲明收斂。不建議將其設置為tol=0,因為由于舍入錯誤,可能永遠不會聲明收斂。用一個很小的數字代替。
precompute_distances {‘auto’, True, False}, default=’auto’
預計算距離(速度更快,但占用更多內存)。
‘auto’:如果n個樣本n_samples * n_clusters > 1200萬,不預先計算距離。這相當于使用雙精度的每個作業大約100 MB的開銷。
True :總是預先計算距離
False:永遠不要預先計算距離。

自0.23版本起被棄用:在0.22版本中不推薦使用‘precompute_distances’,并將在0.25中刪除。它沒有效果。
verbose int, default=0
詳細模式
random_state int, RandomState instance, default=None
確定用于質心初始化的隨機數生成。使用整數使隨機性確定。見Glossary
copy_x bool, default=True
當預計算距離時,首先對數據進行中心化比較精確.如果copy_x為True(默認值),則不會修改原始數據。如果為False,則對原始數據進行修改,并在函數返回之前將其放回,但可以通過減去和添加數據均值來引入較小的數值差異。注意,如果原始數據不是C-contiguous的,即使copy_x為False,也會復制。如果原始數據稀疏,但不采用CSR格式,即使copy_x為false,也會復制。
n_jobs int, default=None
用于計算的OpenMP線程數。并行性是在主cython循環上按樣本順序進行的,該循環將每個樣本分配到其最近的中心。
None-1意味著使用所有處理器。

從0.23版n_jobs開始不推薦使用*:從0.23版*開始不推薦使用,并將在0.25版中刪除。
algorithm {“auto”, “full”, “elkan”}, default=”auto”
表示K-means要使用的算法。經典的EM式算法是“full”的。通過三角不等式,對于具有定義良好的簇的數據,“elkan”變化更為有效。但是,由于分配了一個額外的形狀數組(n_samples, n_clusters),所以內存更多。
目前,“auto”(為向后兼容而保留)選擇了“Elkan”,但它將來可能會改變,以獲得更好的啟發式。

*在版本0.18中更改:*添加了Elkan算法
屬性 說明
cluster_centers_ ndarray of shape (n_clusters, n_features)
簇中心坐標。如果算法在完全收斂之前停止(請參閱tolmax_iter),這些將與labels_比配。
labels_ ndarray of shape (n_samples,)
每一點的標簽
inertia_ float
樣本到其最近的聚類中心的平方距離之和。
n_iter_ int
運行的迭代次數

另見

  • MiniBatchKMeans

    替代性在線實施,使用迷你批次對中心位置進行增量更新。對于大規模學習(例如n_samples> 10k),MiniBatchKMeans可能比默認的批處理實現要快得多。

k-均值問題采用Lloyd’s算法或Elkan’s算法求解。

平均復雜度為O(KnT),n為樣本數,T為迭代次數。

最壞的情形復雜度由O(n^(k+2/p))給出,n=n_samples,p=n_features。 (D. Arthur and S. Vassilvitskii, ‘How slow is the k-means method?’ SoCG2006)

在實踐中,k均值算法是非常快速的(可用的最快的聚類算法之一),但它是在局部收斂極小。這就是為什么多次重新啟動它是有用的。

如果算法在完全收斂之前停止(因為tolmax_iter), labels_cluster_centers將不一致,也就是說,cluster_centers不會是每個簇中各點的均值。此外,估計器將在最后一次迭代后重新分配 labels_,使labels_與訓練集上的預測一致。

示例

>>> from sklearn.cluster import KMeans
>>> import numpy as np
>>> X = np.array([[12], [14], [10],
...               [102], [104], [100]])
>>> kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
>>> kmeans.labels_
array([111000], dtype=int32)
>>> kmeans.predict([[00], [123]])
array([10], dtype=int32)
>>> kmeans.cluster_centers_
array([[10.,  2.],
       [ 1.,  2.]])

方法

方法 說明
fit(self, X[, y, sample_weight]) 計算k-均值聚類
fit_predict(self, X[, y, sample_weight]) 計算聚類中心并預測每個樣本的聚類索引
fit_transform(self, X[, y, sample_weight]) 計算聚類并將X變換成簇距離空間
get_params(self[, deep]) 獲取此估計器的參數
predict(self, X[, sample_weight]) 預測X中每個樣本所屬的最接近的聚類
set_params(self, **params) 設置此估計器的參數
transform(self, X) 將X轉換為簇距離空間
__init__(self, n_clusters=8, *, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='deprecated', verbose=0, random_state=None, copy_x=True, n_jobs='deprecated', algorithm='auto')

[源碼]

初始化self。請參閱help(type(self))以獲得準確的說明。

fit(self, X, y=None, sample_weight=None)

[源碼]

計算k-均值聚類

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features), or (n_samples, n_samples)
要聚類的訓練實例。必須注意的是,數據將轉換為C順序,如果給定的數據不是C-連續的,這將導致內存副本。如果一個稀疏矩陣被傳遞,如果它不是CSR格式,它將被復制。
y Ignored
未使用,在此按約定呈現為API一致性。
sample_weight array-like of shape (n_samples,), default=None
X中每個觀測值的權重,如果沒有,則所有觀測值都被賦予相同的權重。
返回值 說明
self 擬合的估計器
fit_predict(self, X, y=None, sample_weight=None)

[源碼]

計算聚類中心并預測每個樣本的聚類索引

方便方法;等價于調用fit(X)后再predict(X)。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
要轉換的新數據
y Ignored 未使用,在此按約定呈現為API一致性。
sample_weight array-like of shape (n_samples,), default=None
X中每個觀測值的權重,如果沒有,則所有觀測值都被賦予相同的權重。
返回值 說明
labels ndarray of shape (n_samples,)
每個樣本所屬的聚類索引
fit_transform(self, X, y=None, sample_weight=None)

[源碼]

計算聚類并將X變換成簇距離空間

等效于 fit(X).transform(X),但更有效地實現。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
要轉換的新數據
y Ignored
未使用,在此按約定呈現為API一致性。
sample_weight array-like of shape (n_samples,), default=None
X中每個觀測值的權重,如果沒有,則所有觀測值都被賦予相同的權重。
返回值 說明
labels array of shape (n_samples, n_clusters)
X在新空間中的變換
get_params(self, deep=True)

[源碼]

獲取此估計器的參數

參數 說明
deep bool, default=True
如果為True,則將返回此估計器的參數和所包含的作為估計量的子對象。
返回值 說明
params mapping of string to any
映射到其值的參數名稱
predict(self, X, sample_weight=None)

[源碼]

預測X中每一個樣本所屬的最接近的聚類。

在矢量量化文獻中,cluster_centers_被稱為代碼簿, predict返回的每個值都是代碼簿中最接近的代碼的索引。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
要轉換的新數據
sample_weight array-like of shape (n_samples,), default=None
X中每個觀測值的權重,如果沒有,則所有觀測值都被賦予相同的權重。
返回值 說明
labels ndarray of shape (n_samples,)
每個樣本所屬的聚類索引
score(self, X, y=None, sample_weight=None)

[源碼]

K-均值目標上X值的相反

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
要轉換的新數據
y Ignored
未使用,在此按約定呈現為API一致性。
sample_weight array-like of shape (n_samples,), default=None
X中每個觀測值的權重,如果沒有,則所有觀測值都被賦予相同的權重。
返回值 說明
score float
與K-均值目標上的X值相反.
set_params(self, **params)

[源碼]

設置此估計器的參數

該方法適用于簡單估計器以及嵌套對象(例如pipelines)。后者具有表單的 <component>__<parameter>參數,這樣就可以更新嵌套對象的每個組件。

參數 說明
**params dict
估計器參數
返回值 說明書
self object
估計器實例
transform(self, X)

[源碼]

將X轉換成簇距空間。

在新的空間中,每個維度都是到簇中心的距離。請注意,即使X是稀疏的,轉換返回的數組通常也是密集的。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
要轉換的新數據
返回值 說明
labels array of shape (n_samples, n_clusters)
X在新空間中的變換