當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python sklearn KMeans用法及代碼示例

本文簡要介紹python語言中 sklearn.cluster.KMeans 的用法。

用法:

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

K-Means 聚類。

在用戶指南中閱讀更多信息。

參數

n_clusters整數,默認=8

要形成的簇數以及要生成的質心數。

init{‘k-means++’, ‘random’},可調用或類似數組的形狀 (n_clusters, n_features),默認=‘k-means++’

初始化方法:

‘k-means++’:以智能方式為k-mean聚類選擇初始聚類中心以加速收斂。有關更多詳細信息,請參閱 k_init 中的注釋部分。

‘random’:從初始質心的數據中隨機選擇 n_clusters 觀測值(行)。

如果傳遞了一個數組,它的形狀應該是 (n_clusters, n_features) 並給出初始中心。

如果傳遞了一個可調用對象,它應該接受參數 X、n_clusters 和一個隨機狀態並返回一個初始化。

n_init整數,默認=10

k-means 算法將使用不同的質心種子運行的次數。就慣性而言,最終結果將是 n_init 連續運行的最佳輸出。

max_iter整數,默認=300

k-means 算法單次運行的最大迭代次數。

tol浮點數,默認=1e-4

關於兩次連續迭代的聚類中心差異的 Frobenius 範數的相對容差,以聲明收斂。

verbose整數,默認=0

詳細模式。

random_stateint、RandomState 實例或無,默認=無

確定質心初始化的隨機數生成。使用int 使隨機性具有確定性。請參閱術語表。

copy_x布爾,默認=真

在預先計算距離時,首先將數據居中在數值上更準確。如果 copy_x 為 True(默認),則不修改原始數據。如果為 False,則修改原始數據,並在函數返回之前放回,但通過減去再添加數據均值可能會引入小的數值差異。請注意,如果原始數據不是C-contiguous,即使copy_x 為False,也會進行複製。如果原始數據是稀疏的,但不是 CSR 格式,即使 copy_x 為 False,也會進行複製。

algorithm{“auto”, “full”, “elkan”},默認=”auto”

K-means 算法使用。經典的EM-style算法是“full”。通過使用三角不等式,“elkan” 變體對具有明確定義的集群的數據更有效。然而,由於分配了一個額外的形狀數組(n_samples,n_clusters),它更加占用內存。

目前“auto”(為了向後兼容而保留)選擇“elkan”,但它可能會在未來改變以獲得更好的啟發式。

屬性

cluster_centers_ndarray 形狀(n_clusters,n_features)

聚類中心的坐標。如果算法在完全收斂之前停止(參見 tolmax_iter ),這些將與 labels_ 不一致。

labels_ndarray 形狀 (n_samples,)

每個點的標簽

inertia_浮點數

樣本到它們最近的聚類中心的距離平方和,如果提供,則按樣本權重加權。

n_iter_int

運行的迭代次數。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

注意

k-means 問題使用 Lloyd 或 Elkan 算法解決。

平均複雜度由 O(k n T) 給出,其中 n 是樣本數,T 是迭代次數。

最壞情況複雜度由 O(n^(k+2/p)) 給出,其中 n = n_samples,p = n_features。 (D. Arthur 和 S. Vassilvitskii,“k-means 方法有多慢?” SoCG2006)

在實踐中,k-means 算法非常快(可用的最快的聚類算法之一),但它屬於局部最小值。這就是為什麽重新啟動它幾次會很有用。

如果算法在完全收斂之前停止(因為 tolmax_iter ),labels_cluster_centers_ 將不一致,即 cluster_centers_ 將不是每個集群中點的均值。此外,估計器將在最後一次迭代後重新分配labels_,以使labels_ 與訓練集上的predict 一致。

例子

>>> from sklearn.cluster import KMeans
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...               [10, 2], [10, 4], [10, 0]])
>>> kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
>>> kmeans.labels_
array([1, 1, 1, 0, 0, 0], dtype=int32)
>>> kmeans.predict([[0, 0], [12, 3]])
array([1, 0], dtype=int32)
>>> kmeans.cluster_centers_
array([[10.,  2.],
       [ 1.,  2.]])

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.cluster.KMeans。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。