本文簡要介紹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_state:int、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)
聚類中心的坐標。如果算法在完全收斂之前停止(參見
tol
和max_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 算法非常快(可用的最快的聚類算法之一),但它屬於局部最小值。這就是為什麽重新啟動它幾次會很有用。
如果算法在完全收斂之前停止(因為
tol
或max_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.]])
相關用法
- Python sklearn KBinsDiscretizer用法及代碼示例
- Python sklearn KNeighborsTransformer用法及代碼示例
- Python sklearn KNeighborsRegressor用法及代碼示例
- Python sklearn KNeighborsRegressor.kneighbors用法及代碼示例
- Python sklearn KDTree用法及代碼示例
- Python sklearn KNeighborsClassifier.kneighbors用法及代碼示例
- Python sklearn KNeighborsClassifier用法及代碼示例
- Python sklearn KernelPCA用法及代碼示例
- Python sklearn KernelDensity用法及代碼示例
- Python sklearn KernelRidge用法及代碼示例
- Python sklearn KNeighborsRegressor.kneighbors_graph用法及代碼示例
- Python sklearn KNeighborsClassifier.kneighbors_graph用法及代碼示例
- Python sklearn KNNImputer用法及代碼示例
- Python sklearn KNeighborsTransformer.kneighbors_graph用法及代碼示例
- Python sklearn KernelCenterer用法及代碼示例
- Python sklearn KFold用法及代碼示例
- Python sklearn KNeighborsTransformer.kneighbors用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.cluster.KMeans。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。