sklearn.cluster.KMeans(
n_clusters=8,
*,
init='k-means++',
n_init='warn',
max_iter=300,
tol=0.0001,
verbose=0,
random_state=None,
copy_x=True,
algorithm='lloyd')
n_clusters | 簇的数量 |
init |
|
n_init |
|
max_iter |
|
tol | 两次连续迭代的簇中心的Frobenius范数差异来声明收敛的相对容忍度 |
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,n_init='auto').fit(X)
cluster_centers_ | 簇中心的坐标 |
labels_ | 每个点的标签 |
inertia_ | 样本到最近簇中心的平方距离之和,如果提供了样本权重,则按样本权重加权 |
n_iter_ | 运行的迭代次数 |
fit(X, sample_weight=None)
sample_weight 是X中每个观测的权重。如果为None,则所有观测都被赋予相等的权重
类似于使用k_means++来进行
sklearn.cluster.kmeans_plusplus(X, n_clusters, *, sample_weight=None, x_squared_norms=None, random_state=None, n_local_trials=None)
X | 用来选择初始种子的数据 (也就是KMeans里面fit的内容) |
n_cluster | 要初始化的质心数量 |
sample_weight | X中每个观测的权重 |
centers:形状为(n_clusters, n_features) ,k-means的初始中心。
indices:形状为(n_clusters,) 在数据数组X中选择的中心的索引位置。对于给定的索引和中心,X[index] = center
from sklearn.cluster import kmeans_plusplus
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
kmeans_plusplus(X,n_clusters=2)
'''
(array([[10, 0],
[ 1, 4]]),
array([5, 1]))
'''
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='warn',
reassignment_ratio=0.01)
n_clusters | 簇的数量 |
init |
|
max_iter |
|
batch_size | mini batch的大小,默认是1024 |
n_init |
|
还是那些:cluster_centers,labels_,inertia_,n_iter_,n_steps
方法上fit,tranform,predict这些都有,多了一个partial_fit,表示使用一个mini-batch的样本
from sklearn.cluster import MiniBatchKMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
mini_kmeans=MiniBatchKMeans(n_clusters=2).fit(X)
mini_kmeans.cluster_centers_
'''
array([[ 1. , 2.57142857],
[10. , 2. ]])
'''
mini_kmeans.labels_
#array([0, 0, 0, 1, 1, 1])