MiniBatchKMeans#

class sklearn.cluster.MiniBatchKMeans(n_clusters=8, *, init='k-means++', max_iter=100, batch_size=1024, verbose=0, compute_labels=True, random_state=None, tol=0.0, max_no_improvement=10, init_size=None, n_init='auto', reassignment_ratio=0.01)[來源]#

Mini-Batch K-Means 分群。

請參閱使用者指南以了解更多資訊。

參數:
n_clustersint,預設值=8

要形成的群集數量,以及要產生的質心數量。

init{‘k-means++’, ‘random’}, 可呼叫物件或形狀為 (n_clusters, n_features) 的類陣列,預設值=‘k-means++’

初始化方法

‘k-means++’:使用基於點對整體慣性貢獻的經驗機率分佈的抽樣,選擇初始群集質心。此技術可加速收斂。實現的演算法是「greedy k-means++」。它與原始的 k-means++ 的不同之處在於,它在每個抽樣步驟進行多次試驗,並從中選擇最佳的質心。

‘random’:從資料中隨機選擇 n_clusters 個觀察值(列)作為初始質心。

如果傳遞的是陣列,其形狀應為 (n_clusters, n_features),並給定初始中心。

如果傳遞的是可呼叫物件,它應接受參數 X、n_clusters 和一個隨機狀態,並回傳初始化。

max_iterint,預設值=100

在停止之前,對完整資料集進行的最大迭代次數,與任何提前停止的標準啟發式無關。

batch_sizeint,預設值=1024

小批次的大小。為了加快計算速度,您可以將 batch_size 設定為大於 256 * 核心數量,以啟用所有核心的平行處理。

在 1.0 版中變更: batch_size 的預設值從 100 變更為 1024。

verboseint,預設值=0

詳細模式。

compute_labelsbool,預設值=True

在 fit 中小批次最佳化收斂後,計算完整資料集的標籤指派和慣性。

random_stateint、RandomState 實例或 None,預設值=None

決定質心初始化和隨機重新指派的隨機數生成。使用整數可使隨機性具有確定性。請參閱詞彙表

tolfloat,預設值=0.0

根據平均中心平方位置變化的平滑化、變異數正規化的測量值,控制基於相對中心變化的提前停止。此提前停止啟發式方法更接近於演算法的批次變體所使用的方法,但相較於慣性啟發式方法,會產生輕微的計算和記憶體開銷。

若要停用基於正規化中心變化的收斂偵測,請將 tol 設定為 0.0(預設值)。

max_no_improvementint,預設值=10

根據連續小批次在平滑慣性上沒有產生改善的次數,控制提前停止。

若要停用基於慣性的收斂偵測,請將 max_no_improvement 設定為 None。

init_sizeint,預設值=None

要隨機抽樣以加速初始化的樣本數量(有時會以犧牲準確性為代價):唯一的演算法是通過在資料的隨機子集上執行批次 KMeans 來初始化。這需要大於 n_clusters。

如果 None,則啟發式方法為 init_size = 3 * batch_size (如果 3 * batch_size < n_clusters),否則 init_size = 3 * n_clusters

n_init‘auto’ 或 int,預設值=”auto”

嘗試的隨機初始化次數。與 KMeans 不同,該演算法只執行一次,使用 n_init 次初始化中最佳的一次(以慣性測量)。對於稀疏高維度問題,建議多次執行(請參閱使用 k-means 分群稀疏資料)。

n_init='auto' 時,執行次數取決於 init 的值:如果使用 init='random'init 為可呼叫物件,則為 3;如果使用 init='k-means++'init 為類陣列物件,則為 1。

在 1.2 版中新增: n_init 新增了 ‘auto’ 選項。

在 1.4 版中變更: n_init 的預設值在版本中變更為 'auto'

reassignment_ratiofloat,預設值=0.01

控制中心點被重新分配的最大計數次數的比例。數值越高表示計數較低的中心點更容易被重新分配,這意味著模型會需要更長的時間收斂,但也應該收斂到更好的分群結果。然而,數值過高可能會導致收斂問題,尤其是在批次大小較小的情況下。

屬性:
cluster_centers_形狀為 (n_clusters, n_features) 的 ndarray

群集中心的座標。

labels_形狀為 (n_samples,) 的 ndarray

每個點的標籤(如果 compute_labels 設定為 True)。

inertia_浮點數

如果 compute_labels 設定為 True,則為與所選分割相關的慣性準則的值。如果 compute_labels 設定為 False,則為基於批次慣性的指數加權平均值的慣性近似值。慣性定義為樣本到其群集中心的平方距離之總和,如果提供樣本權重,則會以樣本權重加權。

n_iter_整數

完整資料集上的迭代次數。

n_steps_整數

處理的最小批次數。

在 1.0 版本中新增。

n_features_in_整數

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅在 X 具有全為字串的特徵名稱時定義。

在 1.0 版本中新增。

另請參閱

KMeans

基於 Lloyd 演算法的群集方法的經典實現。它在每次迭代中都會消耗整組輸入資料。

注意事項

請參閱 https://www.eecs.tufts.edu/~dsculley/papers/fastkmeans.pdf

當資料集中點太少時,某些中心點可能會重複,這意味著在請求的群集數量和返回的群集數量方面,適當的群集結果並不總是匹配。 一種解決方案是設定 reassignment_ratio=0,這可以防止重新分配太小的群集。

請參閱 比較 BIRCH 和 MiniBatchKMeans,以與 BIRCH 進行比較。

範例

>>> from sklearn.cluster import MiniBatchKMeans
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [4, 2], [4, 0], [4, 4],
...               [4, 5], [0, 1], [2, 2],
...               [3, 2], [5, 5], [1, -1]])
>>> # manually fit on batches
>>> kmeans = MiniBatchKMeans(n_clusters=2,
...                          random_state=0,
...                          batch_size=6,
...                          n_init="auto")
>>> kmeans = kmeans.partial_fit(X[0:6,:])
>>> kmeans = kmeans.partial_fit(X[6:12,:])
>>> kmeans.cluster_centers_
array([[3.375, 3.  ],
       [0.75 , 0.5 ]])
>>> kmeans.predict([[0, 0], [4, 4]])
array([1, 0], dtype=int32)
>>> # fit on the whole data
>>> kmeans = MiniBatchKMeans(n_clusters=2,
...                          random_state=0,
...                          batch_size=6,
...                          max_iter=10,
...                          n_init="auto").fit(X)
>>> kmeans.cluster_centers_
array([[3.55102041, 2.48979592],
       [1.06896552, 1.        ]])
>>> kmeans.predict([[0, 0], [4, 4]])
array([1, 0], dtype=int32)
fit(X, y=None, sample_weight=None)[原始碼]#

透過將 X 分塊成最小批次來計算質心。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

要群集的訓練實例。必須注意,資料將會被轉換為 C 順序,如果給定的資料不是 C 連續的,這將導致記憶體複製。如果傳遞稀疏矩陣,如果不是 CSR 格式,則會建立副本。

y忽略

未使用,為了 API 的一致性,依慣例在此處呈現。

sample_weight形狀為 (n_samples,) 的類陣列,預設值=None

X 中每個觀測值的權重。如果為 None,則所有觀測值都會被賦予相同的權重。如果 init 是可呼叫的或使用者提供的陣列,則在初始化期間不會使用 sample_weight

在 0.20 版本中新增。

傳回值:
self物件

擬合的估計器。

fit_predict(X, y=None, sample_weight=None)[原始碼]#

計算群集中心,並預測每個樣本的群集索引。

方便的方法;等同於呼叫 fit(X) 後接著呼叫 predict(X)。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

要轉換的新資料。

y忽略

未使用,為了 API 的一致性,依慣例在此處呈現。

sample_weight形狀為 (n_samples,) 的類陣列,預設值=None

X 中每個觀測值的權重。如果為 None,則所有觀測值都會被賦予相同的權重。

傳回值:
labels形狀為 (n_samples,) 的 ndarray

每個樣本所屬的群集索引。

fit_transform(X, y=None, sample_weight=None)[原始碼]#

計算群集結果並將 X 轉換為群集距離空間。

等同於 fit(X).transform(X),但實作效率更高。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

要轉換的新資料。

y忽略

未使用,為了 API 的一致性,依慣例在此處呈現。

sample_weight形狀為 (n_samples,) 的類陣列,預設值=None

X 中每個觀測值的權重。如果為 None,則所有觀測值都會被賦予相同的權重。

傳回值:
X_new形狀為 (n_samples, n_clusters) 的 ndarray

在新的空間中轉換的 X。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

輸出特徵名稱將會加上小寫的類別名稱作為前綴。例如,如果轉換器輸出 3 個特徵,則輸出特徵名稱會是:["class_name0", "class_name1", "class_name2"]

參數:
input_features類陣列字串或 None,預設值為 None

僅用於驗證特徵名稱是否與 fit 中看到的名稱相同。

傳回值:
feature_names_out字串物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看使用者指南,了解路由機制如何運作。

傳回值:
routingMetadataRequest

一個MetadataRequest,封裝路由資訊。

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設值為 True

如果為 True,將會回傳此估算器及其包含的子物件(也是估算器)的參數。

傳回值:
paramsdict

參數名稱對應到它們的值。

partial_fit(X, y=None, sample_weight=None)[原始碼]#

在單個小批次 X 上更新 k 平均估算。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

要群集的訓練實例。必須注意,資料將會被轉換為 C 順序,如果給定的資料不是 C 連續的,這將導致記憶體複製。如果傳遞稀疏矩陣,如果不是 CSR 格式,則會建立副本。

y忽略

未使用,為了 API 的一致性,依慣例在此處呈現。

sample_weight形狀為 (n_samples,) 的類陣列,預設值=None

X 中每個觀測值的權重。如果為 None,則所有觀測值都會被賦予相同的權重。如果 init 是可呼叫的或使用者提供的陣列,則在初始化期間不會使用 sample_weight

傳回值:
self物件

回傳更新後的估算器。

predict(X)[原始碼]#

預測 X 中每個樣本最接近的叢集。

在向量量化文獻中,cluster_centers_ 被稱為碼本,而 predict 回傳的每個值都是碼本中最接近碼的索引。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

要預測的新資料。

傳回值:
labels形狀為 (n_samples,) 的 ndarray

每個樣本所屬的群集索引。

score(X, y=None, sample_weight=None)[原始碼]#

與 K 平均目標上 X 的值相反。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

新資料。

y忽略

未使用,為了 API 的一致性,依慣例在此處呈現。

sample_weight形狀為 (n_samples,) 的類陣列,預設值=None

X 中每個觀測值的權重。如果為 None,則所有觀測值都會被賦予相同的權重。

傳回值:
scorefloat

與 K 平均目標上 X 的值相反。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[原始碼]#

請求傳遞到 fit 方法的中繼資料。

請注意,此方法僅在 enable_metadata_routing=True 時才相關(請參閱 sklearn.set_config)。請查看使用者指南,了解路由機制如何運作。

每個參數的選項如下:

  • True:請求中繼資料,並在提供時傳遞到 fit。如果未提供中繼資料,則會忽略該請求。

  • False:不請求中繼資料,且元估算器不會將其傳遞到 fit

  • None:不請求中繼資料,如果使用者提供,元估算器將會引發錯誤。

  • str:中繼資料應該使用這個給定的別名,而不是原始名稱,傳遞到元估算器。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您變更某些參數的請求,而其他參數則不變。

在 1.3 版本中新增。

注意

此方法僅在將此估算器用作元估算器的子估算器時才相關,例如在 Pipeline 內使用。否則,它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

fitsample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱 Introducing the set_output API,以取得如何使用 API 的範例。

參數:
transform{“default”, “pandas”, “polars”}, 預設值為 None

設定 transformfit_transform 的輸出。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換設定保持不變

1.4 版本新增: 新增了 "polars" 選項。

傳回值:
self估計器實例

估計器實例。

set_params(**params)[原始碼]#

設定此估計器的參數。

此方法適用於簡單的估計器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個組件。

參數:
**paramsdict

估計器參數。

傳回值:
self估計器實例

估計器實例。

set_partial_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[原始碼]#

請求傳遞至 partial_fit 方法的中繼資料。

請注意,此方法僅在 enable_metadata_routing=True 時才相關(請參閱 sklearn.set_config)。請查看使用者指南,了解路由機制如何運作。

每個參數的選項如下:

  • True:請求中繼資料,如果提供則傳遞至 partial_fit。如果未提供中繼資料,則忽略請求。

  • False:不請求中繼資料,且元估計器不會將其傳遞至 partial_fit

  • None:不請求中繼資料,如果使用者提供,元估算器將會引發錯誤。

  • str:中繼資料應該使用這個給定的別名,而不是原始名稱,傳遞到元估算器。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您變更某些參數的請求,而其他參數則不變。

在 1.3 版本中新增。

注意

此方法僅在將此估算器用作元估算器的子估算器時才相關,例如在 Pipeline 內使用。否則,它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

partial_fitsample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MiniBatchKMeans[原始碼]#

請求傳遞至 score 方法的中繼資料。

請注意,此方法僅在 enable_metadata_routing=True 時才相關(請參閱 sklearn.set_config)。請查看使用者指南,了解路由機制如何運作。

每個參數的選項如下:

  • True:請求中繼資料,如果提供則傳遞至 score。如果未提供中繼資料,則忽略請求。

  • False:不請求中繼資料,且元估計器不會將其傳遞至 score

  • None:不請求中繼資料,如果使用者提供,元估算器將會引發錯誤。

  • str:中繼資料應該使用這個給定的別名,而不是原始名稱,傳遞到元估算器。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您變更某些參數的請求,而其他參數則不變。

在 1.3 版本中新增。

注意

此方法僅在將此估算器用作元估算器的子估算器時才相關,例如在 Pipeline 內使用。否則,它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

scoresample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。

transform(X)[原始碼]#

將 X 轉換為叢集距離空間。

在新的空間中,每個維度都是到叢集中心的距離。請注意,即使 X 是稀疏的,transform 返回的陣列通常也是密集的。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

要轉換的新資料。

傳回值:
X_new形狀為 (n_samples, n_clusters) 的 ndarray

在新的空間中轉換的 X。