sklearn.cluster.k_means_._init_centroids

参数:

X:数据集 [n_samples,n_features]。

k : 选k个初始点。

init : 初始化的方法(’k_means++‘, 'random', ' ndarray', or callable)。

random_state : 用于产生中心的产生器,若为整数,则为种子,默认为 global numpy random number generator。

x_squared_norms : 每个样本点的平方范数,默认为none。

init_size : 随机抽样一些样本数据,用这些样本数据来产生初始中心点,以加快运行速度,但其需大于k。


返回:

centers:中心点  (k, n_features)


流程:

1、检查random_state.  将种子转化为np.random.RandomState instance

2、得到n_samples 。 即样本数量。

3、检验init_size值:如果  init_size不是None 并且  init_size 小于 n_samples:init_size 还需要满足其不小于k。如果小于则将init_size的值变为k的3倍。这样就得到了合理的init_size值。然后利用random_state产生init_size个随机数作为样本坐标。然后更新X,X_squared_norms,n_samples。

4、检验n_sample值与k,若n_sample<k则报错。

5、检验init参数,根据不同的init参数值调用不同的过程来产生中心点。

            (1) 、k_means++ : 一种产生初始点的启发式方法。 调用_k_init函数。产生k个初始点。其过程参见_k_init函数

            (2) 、random : 利用 random_state.permutation(n_samples)产生一个随机排列,然后选取前k个作为初始中心点。

            (3) 、其他情况,若init 具有__array__ 属性。将init作为centers

            (4) 、如果init为可调用的, 则调用init将其约定参数为(X,k,random_state)

            (5)、 若非这些情况则报错。

6、到了这儿就得到了centers。判断是否为稀疏矩阵,若是将其转化为统一格式。

7、返回前检验centers数据的样本个数是否为k,若不为k则报错。

8、返回centers

转载于:https://my.oschina.net/u/2336336/blog/478455

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值