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
fit
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
更新後的物件。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
請參閱 Introducing the set_output API,以取得如何使用 API 的範例。
- 參數:
- transform{“default”, “pandas”, “polars”}, 預設值為 None
設定
transform
和fit_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_fit
中sample_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
score
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
更新後的物件。